【问题标题】:Is it possible to use Clojure CLR with C# in Xamarin?是否可以在 Xamarin 中将 Clojure CLR 与 C# 一起使用?
【发布时间】:2013-04-23 21:30:29
【问题描述】:

我喜欢 Clojure。这是迄今为止我最喜欢的语言。

我刚刚发现了 Xamarin,它允许您拥有跨平台应用程序,充分利用本机库。使用的语言是 C#。

现在我想知道是否有任何方法可以在 Clojure (CLR) 中而不是 C# 中对我的大多数 Xamarin 应用程序进行编程。

【问题讨论】:

  • Regular Clojure 已经跨平台并允许使用本机库。您能否更具体地说明您要实现的目标?如果它只是您所追求的跨平台原生图形库,您可能会查看在 Clojure 中运行良好的 LibGDX。

标签: c# clojure mono xamarin clojureclr


【解决方案1】:

因此,Clojure CLR 将允许您使用它可以加载的任何库。例如,我已将 Oracle.DataAccess 库和 NLog 库加载到 Clojure CLR 中,因此理论上可以以相同的方式加载 Xamarin 库:

;;; not sure which library you want to include, using this as a placeholder
(assembly-load-from "C:/Path/To/Xamarin.Core.dll")

话虽如此,Xamarin 本身似乎也是一个 IDE,并且是在自己的专有库和构建工具之上的一组构建工具,因此可能无法将两者完全集成。另外,我认为 Xamarin 纯粹与 C# 一起工作,因此在 Clojure 中编码可能是不可能的......直接。

您可以做的是在 Clojure CLR 中创建一些库,然后将它们编译成 DLL,然后您可以链接到这些 DLL,这样您就可以在 Clojure 中构建大部分逻辑,然后创建一些简单的 C# 包装器,您可以Xamarin 应用程序消耗。

我很想听听您的尝试,以及您是否成功。

祝你好运!

【讨论】:

  • 对不起,我的意思是引用你所说的话,但它却发布了评论。感谢您的解释(我会投票,但我没有代表)!能否在 Xamarin:Android/iOS 项目中使用自定义 DLL?
  • 我不能 100% 确定,但我想你可以,只要它们经过编译,并且可以在 Mono 下加载。我要提醒的唯一另一件事是 Clojure CLR 确实使用动态语言运行时,如果您将其部署到移动平台上,则可能无法按预期工作。试试看不会有什么坏处。
【解决方案2】:

在 Android 中可能是的,但对于 iOS,我认为这不太可能,因为后者是一个在生成代码、反射等方面有很多限制的平台。而且动态类型的 Clojure 很可能会受到影响。

老实说,.NET 世界中的 Clojure 更适合 F#(也是函数式、默认情况下不可变等),这是一种刚刚被 Xamarin 正式采用的语言(这意味着您可以在 Android 和iOS 和 Mac)。

它也是静态类型的(与 Clojure 不同),所以这可能意味着它也更快。试试看!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    • 2021-11-12
    相关资源
    最近更新 更多