首页 > 解决方案 > 为什么这个lua变量是nil,如果赋值语句后跟一个“,”

问题描述

local i1 = 1
print(i1)

local i2 = 1,0
print(i2)

local i3 = 1,
print(i3)

结果:

1
1
nil

为什么 i3 是零?

标签: lua

解决方案


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

推荐阅读