我想知道是否可以在NLua中使用LINQ?我已经搜索了各种来源,包括项目的github页面,但没有任何运气。我得到了以下最小的C#示例:
using (var lua = new Lua())
{
lua.LoadCLRPackage();
lua["data"] = new[] { 1, 2, 3, 4, 5 };
var res = lua.DoFile(@"C:\..\MyLua.lua");
}MyLua.lua看起来是这样的:
luanet.import_type('System.Linq')
-- syntax error near 'in'
res = from d in data where d > 2 select d
-- ')' expected near '='
res = data:Where(x => x > 2)
return res执行时,语法错误(在上面的lua脚本中显示为注释)由NLua返回。很高兴知道这是否是设计出来的,如果是的话,未来版本的NLua是否会支持LINQ?
发布于 2013-12-04 03:03:33
LINQ是一个“语言集成查询”:在这里集成是关键,即C#语法支持符合LINQ语法和语义的结构。
NLua不改变Lua的语法(更不用说语义),它只是使.NET库可以从Lua获得,使从C#运行Lua脚本变得更容易,并且使两种语言之间的数据交换更加容易。那么,NLua中不支持LINQ查询是出于设计原因吗?嗯,算是吧!在这个设计中,NLua不改变或扩展Lua语法。
将来的版本会支持它吗?嗯,任何未来都是一段很长的时间,谁能预测未来呢?即使当前的维护人员拒绝,他们也可以决定在几个月内放弃这个项目,让另一个开发人员接管它,他认为这将是一个好主意。所以你问题的那一部分没有答案。
因此,尽管如此,答案仍然是肯定的,您可以使用LINQ :在发布到Lua的C#函数中创建LINQ查询,然后从Lua调用它们。诚然,这并不坏,但仍然没有您想要做的那样强大,这就是在不需要编译C#代码的情况下在Lua代码中创建LINQ。我认为这是不可能的,虽然我隐约记得有一种方法可以动态编译C#代码,但我可能在做梦。
https://stackoverflow.com/questions/20337376
复制相似问题