如果赋值语句后跟“,”,为什么这个lua变量为nil?

时间:2018-07-08 09:08:59

标签: lua

local i1 = 1
print(i1)

local i2 = 1,0
print(i2)

local i3 = 1,
print(i3)

结果:

1
1
nil

为什么i3为零?

2 个答案:

答案 0 :(得分:6)

除少数例外,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'

答案 1 :(得分:-2)

同意 Mankarse 的响应,如果您在变量的内容后加上逗号而没有结束符,系统将认为该变量的内容仍在运行,并且由于您无法访问变量中的变量,变量的内容,则打印结果为nil。因此是解决它的好方法,

local i1 = 1
print(i1)

local i2 = 1,0
print(i2)

local i3 = 1
print(i3)

只需在,之后删除1