编译Lua而不在字符串和数字之间自动转换

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)

Phr*_*ogz 2

著名的LHF在上面评论说,这是不可能开箱即用的,需要编辑 Lua 的内部结构,从http://www.lua.org/source/5.2/lvm.c.html#luaV_tonumber开始

将此标记为答案以结束此问题。如果后来有人选择提供包含需要做什么的深入细节的答案,我将很乐意将接受标记切换到该答案。