在.net使用lua——(一)为什么需要在.net环境中使用lua

最近在开发一个软件项目时,需求方提出需要根据自定义的计算公式,动态生成软件系统中存储的结果数据和中间参数。以我以往的经验来看,这种需求在解释型语言中比较好处理,例如在python中,只需要将字符串存储的表达式,通过eval()函数进行处理,就可以让解释器把结果输出给调用函数,这样就可以让用户来定义流程中的一部分。

那么在.net环境下,我们应该如何去做呢?比较底层的做法时通过表达式.net的Expression(表达式树)api来解析表达式,并进行运算。这种做法显然不符合我们不造轮子的态度,那么我们来看看有哪些轮子可以用吧。

  1. pythonnet        在.net程序直接调用python语言和函数
  2. nlua                 在.net程序中,调用lua
  3. Fell                  在.net程序中,调用vb

这三种方式,我选择了nlua,原因是lua语言很简单——甚至比python还简单。本身作为一种嵌入式语言,lua被广泛应用于计算机和互联网领域中,学习曲线很低,对于教会客户使用这个工具我还是很有信心的。接下来看一个例子:

using (Lua state = new())
{
    state["x"] = 5;
    object ss = state.DoString(@"return x+5")[0];
    double result = Convert.ToDouble(ss);
}

上面的代码定义了一个Lua的运行时,在运行时中写入全局变量x,使用lua语句“return x+5”返回一个结果10,最终转换成double复制给.net对象,看很简单吧。

接下来我会分两篇文章讲述一下NLua在使用过程中的注意事项,以及高级应用,感谢阅读,如果对您有帮助,请您为我的文章点赞,让更多人可以看到。

  • 11
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值