加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 00:25:58 所属栏目:大数据 来源:网络整理
导读:Lua通常是一种 strongly-typed语言,几乎不提供数据类型之间的隐式转换. 但是,数字和字符串确实得到automatically coerced in a few cases: Lua provides automatic conversion between string and number values at run time. Any arithmetic operation app
Lua通常是一种 strongly-typed语言,几乎不提供数据类型之间的隐式转换.

但是,数字和字符串确实得到automatically coerced in a few cases:

Lua provides automatic conversion between string and number values at run time. Any arithmetic operation applied to a string tries to convert this string to a number,following the rules of the Lua lexer. (The string may have leading and trailing spaces and a sign.) Conversely,whenever a number is used where a string is expected,the number is converted to a string,in a reasonable format

从而:

local x,y,z = "3","8","11"
print(x+y,z)  --> 11   11
print(x+y==z) --> false
print(x>z)    --> true

我不想要这个.如何重新编译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

解决方法

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读