为什么我在 Lua 中使用 loadstring 时会得到一个小数点

我有一个场景,需要将动态操作符传入 loadstring。 我在这里找到了它,但我不明白。

请看以下输出:

> a = '3'
> b = '7'
> operator = '+'
> loadstring("return a" .. operator .. "b")()
10.0 -- 为什么我会得到带小数点的结果。
> loadstring("return 3" .. operator .. 7)()
10   -- 但这个结果没有小数点?

有人能解释一下 loadstring 内部发生了什么,因为我认为我应该得到相同的结果吗?

点赞
用户107090
用户107090

关于应用于字符串的算术运算符,手册指出:

如果两个操作数都是数字或可以转换为数字的字符串(参见§3.4.3),则它们将被转换为浮点数。

也许你想要使用

loadstring("return " .. a .. operator .. b)()

而不是

loadstring("return a" .. operator .. "b")()
2017-09-10 11:40:12