還記得我們曾經在新手村 (1) 提到 chunk(組塊)這個詞嗎?當時還提到,所謂 chunk 是由很多 statement(敘述)組合在一起的,而那時我對敘述的解釋是,一行程式碼就是一個敘述,但其實,這個說法不太精確,而我們這一篇文章將會來談談 Lua 中有哪些敘述。 敘述 Statement 敘述又稱作 陳述式 ,所有敘述都會造成一個效果,而這個效果要視我們使用了哪一種敘述而定。在 Lua 中,敘述分為:指定、local 宣告、block、控制結構、函式宣告及呼叫,還有 return、break 敘述 1 。 而控制結構裡包含了 if、while、repeat、for 等敘述,是我們這篇的主角。 註1 :Lua 5.2 裡還多了 goto 敘述。 指定 Assignment 指定又稱 指派 ,是改變變數值最基本的方法。普通的指定我們已經看過很多了,接著來看看 Lua 裡所謂的「多重指定」: a, b = 12, 78 a 12 b 78 我們可以一次把多個值指定(分配)給多個變數,像上例這樣。我們可以利用這個特性,寫出簡潔有力的兩變數交換: a, b = 12, 78 a, b = b, a print(a, b) 78 12 當然,也可以對 table 的欄位(field)進行這樣的操作: ary = { hi=19, sky=36 } ary['hi'], ary['sky'] = ary['sky'], ary['hi'] ary['hi'] 36 ary['sky'] 19 不過,如果左方變數跟右邊值的數量不一樣的話呢? a, b = 1, 2, 3, 4 -- 3、4 被丟棄 (discard) print(a, b) 1 2 a, b, c, d = 7, 8 -- c、d 補 nil print(a, b, c, d) 7 8 nil nil 多出來的值被丟棄,多出來的變數被補 nil,請牢牢記住這個規則,這在我們之後講到函式時很重要。 Local 宣告與區塊(Block) 我們之前所使用的變數都是屬於全域(global)變數,也就