指定教學 |
|
設定變數值為指定
> x = 1 > y = "hello" > print(x,y) 1 hello
在 Lua 中,我們可以在單一陳述式中進行多重指定,例如:
> x, y = 2, "there" > print(x,y) 2 there
=
的變數清單。我們可以隨意指定值,而且類型不一定要相同,例如:> a,b,c,d,e,f = 1,"two",3,3.14159,"foo",{ this="a table" } > print(a,b,c,d,e,f) 1 two 3 3.14159 foo table: 0035BED8
等號右側的值可以是表達式,例如 i+1
。但是,左側的值不行。
如以下說明,多重指定會帶來幾個警告。
任何表達式會先評估。評估的表達式隨後指定。
> i = 7
> i, x = i+1, i
> print(i, x)
8 7
當 Lua 到達第二行時會評估表達式 i+1
和 i
。評估後,第二行變成 i, x = 8, 7
。然後,它從右至左執行指定。(指定順序請參閱下文)。
值指定就好像所有指定都同時進行。因此,您可以使用多重指定換換變數值。
> a,b = 1,2 -- set initial values > print(a,b) 1 2 > a,b = b,a -- swap values around > print(a,b) 2 1 > a,b = b,a -- and back again > print(a,b) 1 2
bold = b; b = a; a = bold;
)。C 語言程式設計中會常用到這種暫時性變數;但在 Lua 中沒有必要。
執行多重指定順序未定義。這表示您不應該假設指定是從左至右進行。如果在指定清單中出現相同的變數或表格參照兩次,結果可能會讓您大吃一驚。
> a, a = 1, 2
> print(a)
1
a=2
,然後是 a=1
。但我們不應仰賴 Lua 的未來版本保持一致。如果您看重指定順序,應使用個別指定陳述式。
如果一個值清單比變數清單長,會忽略額外值。
> a,b,c = 1,2,3,4,5,6
> print(a,b,c)
1 2 3
如果一個值清單比變數清單短,Lua 會將 nil
值指定給沒有值的變數。
> a,b,c,d = 1,2 > print(a,b,c,d) 1 2 nil nil