根据我对Lua的了解(并根据我在Lua手册中所读的内容),我一直给人的印象是Lua中的标识符仅限于AZ&az&_&digits(并且不能开始使用数字,也不能保留关键字,即local local = 123)。
现在,我遇到了一些(混淆的)Lua程序,该程序使用各种奇怪的字符作为标识符:
https://i.imgur.com/HPLKMxp.png
-- Most likely, copy+paste won't work. Download the file from https://tknk.io/7HHZ
print(_VERSION .. " " .. (jit and "JIT" or "non-JIT"))
local T = {}
T.math = T.math or {}
T.math.?»?​â®â€‹â?â®â€‹?»?â€?â€âŽ = math.sin
T.math.â¬â€‹ââ¬ââ«â®â€â€¬ = math.cos
for k, v in pairs(T.math) do print(k, v) end
Run Code Online (Sandbox Code Playgroud)
输出:
Lua 5.1 JIT的
“功能”:builtin#45
????? ▲功能:内建#44
我不清楚,为什么标识符允许使用这组字符?
换句话说,为什么它是一个完全有效的Lua程序?