如何最有效地将Lua与C#结合使用?

3

据我了解,Lua是一种可嵌入的脚本语言,可以在对象上执行方法。使用Lua作为解释器并在Web环境中执行方法或用作规则引擎可行吗?需要避免哪些陷阱?


你现在可以把“Lua”拼写正确了。这是新手常犯的错误,把它当作首字母缩略词来书写,但事实上不是这样的。:)Lua在葡萄牙语中表示月亮。LUA是Windows最小用户访问控制等内容的缩写(请参见维基百科...)。 - akauppi
你修正了其中一个“Lua”的拼写,但是另一个“LUA”仍然没有改。 - luiscubal
4个回答

6

真遗憾,所有这些链接都失败了,重定向到双重www大杂烩www.www.lua-users.org。 - Jon Davis
该网站正在进行维护(自2010年8月22日起),根据2010年8月19日的邮件列表发布。我已经通知了列表中的相关人员。谢谢。 - Doug Currie
DNS已经更新,截至2010年08月23日,lua-users.org链接似乎正在工作。 - Doug Currie

5
Lua非常快-脚本可以预编译成字节码,函数执行速度接近C++虚拟方法调用。这就是为什么它在游戏行业用于脚本化AI、插件和其他高级游戏功能的原因。
但你的问题标签中包含C#和Web服务器。
如果您不考虑嵌入式Web服务器-Lua并不是非常强大。Lua是ANSI C-它编译成本地代码,因此在asp.net服务器或C#代码中并不受欢迎。考虑“中等信任”、“绑定”或“64位”。
足够了解风险。如果您已经在使用C#,那么没有理由避免在Web服务器上使用它。它被编译并缓存。它可以为这样的巨大网站提供服务。

2
我们曾经在一个中等规模的C#生物医学仪器控制应用程序中使用Lua作为脚本语言。这是一种很好的方式来教硬件人员如何编写自己的小测试代码。
一旦IronPython成熟,我们决定使用Python代替Lua,因为Python更全面且与VS更好地集成(以及有更多使用它的人),到目前为止,效果还不错。Lua是一种很好的小语言,但我现在无法想出任何优点来超过Python。
Lua可能会快一些,但如果您已经将领域分成了脚本和非脚本,那么这可能并不是一个重要因素。

1
如果你从零开始,你会选择使用Iron Python吗? - David Robbins
我认为这个观点同样适用于Lua和Python在更通用的层面上的比较。如果一个人只想要一个“就绪”的脚本语言,那么Python是一个安全而受欢迎的选择。如果一个人想要嵌入、小巧或自定义,我认为没有什么能比得上Lua。 - akauppi

1

我喜欢Lua的原因是它作为一种语言表现出色,特别是与C/C++一起使用时。对我来说,这两者的融合才是“创造”了这种语言。

缺点.. 缺少扩展模块可能被视为其中之一。就像没有CPAN,但有LuaRocks。这取决于您是否有足够的绑定来解决您的问题。如果没有,您可能需要自己制作。

语言缺陷.. Lua维基上有一些愿望,可以看作是“缺陷”。没有“switch”语句。没有适当的“cond ? a : b”格式。如果您不想超越这些相当肤浅的语法问题,那么也许JavaScript适合您?

总体而言,这是一种使我比没有它时更加高效10-100倍的语言。


当然,cond and a or b 是 Lua 中类似于 C 语言中的 cond ? a : b 的等效写法,并且具有几乎看起来合理的优点;-) - RBerteig
如果它是等价的,那就没有问题了。但事实并非如此。如果'a'为nil或false,则该语句变成b。这就是问题所在,除了编写一个函数或确保nil/false始终位于后面的值之外,没有其他解决办法。这很糟糕。 - akauppi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接