Phr*_*ogz 8 c lua strong-typing
Lua通常是一种强类型语言,几乎不提供数据类型之间的隐式转换.
Lua在运行时提供字符串和数字值之间的自动转换.应用于字符串的任何算术运算都会尝试将此字符串转换为符合Lua词法分析器规则的数字.(该字符串可能有前导和尾随空格以及符号.)相反,只要在预期字符串的位置使用数字,该数字就会以合理的格式转换为字符串
从而:
local x,y,z = "3","8","11"
print(x+y,z) --> 11 11
print(x+y==z) --> false
print(x>z) --> true
Run Code Online (Sandbox Code Playgroud)
我不想要这个.如何重新编译Lua解释器以删除所有自动转换?
我更愿意:
print(x+y) --> error: attempt to perform arithmetic on a string value
print(x>1) --> error: attempt to compare number with string
print(x..1) --> error: attempt to concatenate a number value
Run Code Online (Sandbox Code Playgroud)
著名的LHF在上面评论说,这是不可能开箱即用的,需要编辑 Lua 的内部结构,从http://www.lua.org/source/5.2/lvm.c.html#luaV_tonumber开始
将此标记为答案以结束此问题。如果后来有人选择提供包含需要做什么的深入细节的答案,我将很乐意将接受标记切换到该答案。