【发布时间】:2014-10-16 01:00:45
【问题描述】:
我正在开发一个允许用户输入 Lua(特别是布尔条件)的脚本,并且我正在尝试提供一个功能,该功能将对输入的脚本执行快速错误检查。
如果loadstring() 失败,很容易引发错误,因此可以轻松处理语法问题。
但是,如果变量输入不正确,就很难发现问题。
假设用户输入以下内容:
value.custom_value_1 == 1 and valse.custom_value_2 ~= 1
就语法而言,loadstring() 非常满意——它将“return”作为前缀添加到该字符串。
我的下一步是在执行用户输入的内容时检查错误。问题是,当value.custom_value_1 ~= 1 时,逻辑会短路,因为我们正在处理and - 没有必要再进一步了,左侧已经有 false。
我想要找到一种方法让 Lua 完全评估表达式,而不是短路。如果这样做,拼写错误valse 将被捕获(无论value.custom_value_1 的值如何),我可以向最终用户提供错误消息。
有什么想法吗?
我目前最好的想法是过滤用户输入,整理出每个输入的值(基本上,任何不是条件的or,and,...),然后手动进行。但我认为值得检查一下是否有更好的方法。
【问题讨论】:
-
是否可以修改 Lua 源代码?
标签: lua user-input conditional-statements short-circuiting