local i1 = 1
print(i1)
local i2 = 1,0
print(i2)
local i3 = 1,
print(i3)
结果:
1
1
nil
为什么i3是零?
除了少数例外,Lua忽略了空格和换行符.如果您删除换行符,则您拥有:
local i3 = 1, print(i3)
您的打印在分配执行之前i3执行.
根据Lua 5.3手册的§3.3.3:
赋值语句首先计算其所有表达式,然后才执行赋值.
i3最终设定为1:
local i1 = 1
print(i1) --Prints '1'
local i2 = 1,0
print(i2) --Prints '1'
local i3 = 5
local i3 = 1,
print(i3) --Prints '5'
print(i3) --Prints '1'