DoString在执行表达式时出现错误。

我正在将Lua集成到我的应用程序中。但是如果我在表达式中添加任何if条件,则会出现错误。

 string ifCondition =" return  10 + 1";
 string expression = "function f()\n" + ifCondition + " \nend";
 state.DoString(expression);
 var scriptFunc = state["ScriptFunc"] as LuaFunction;
 var res = scriptFunc.Call();
 Response.Write(res[0]);

如果我运行上面的代码,它就能工作。现在我添加if条件,它就不工作了。

这是我的代码

 string ifCondition ="If (10 < 2) then  \n return  10 + 1 \n else \n return 12 end";
 string expression = "function f()\n" + ifCondition + " \nend";
 state.DoString(expression);
 var scriptFunc = state["ScriptFunc"] as LuaFunction;
 var res = scriptFunc.Call();
 Response.Write(res[0]);

如何动态执行if条件?

点赞
用户501459
用户501459

Lua 的关键字都是小写的。将 If 改成 if

另外,C#支持多行字符串。所以你可以写成以下形式:

string ifCondition = @"
    if (10 < 2) then
        return  10 + 1
    else
        return 12
    end";

虽然在这里这不是什么大问题,但是如果你的片段越来越长,把它们维护在一行上会越来越困难。

2015-08-25 15:02:45