第一版是為 Lua 5.0 所寫。雖然在後續版本中仍然有很大的相關性,但有一些差異。
第四版針對 Lua 5.3,可以在 Amazon 和其他書店買到。
購買這本書,您也可以協助 支援 Lua 專案


4.1 – 指派

指派是變數或表格欄位值變更的基本方式

    a = "hello" .. "world"
    t.n = t.n + 1

Lua 允許多重指派,其中一個值清單會在一個步驟中指派給一個變數清單。兩個清單中的元素都以逗號分隔。例如,在指派中

    a, b = 10, 2*x
變數 a 會取得值 10,而 b 會取得 2*x

在多重指派中,Lua 會先評估所有值,然後才會執行指派。因此,我們可以使用多重指派來交換兩個值,如下所示

    x, y = y, x                -- swap `x' for `y'
    a[i], a[j] = a[j], a[i]    -- swap `a[i]' for `a[j]'

Lua 始終會調整值數量以符合變數數量:當值清單比變數清單短時,額外的變數會收到 nil 作為其值;當值清單較長時,額外的值會被靜默捨棄

    a, b, c = 0, 1
    print(a,b,c)           --> 0   1   nil
    a, b = a+1, b+1, b+2   -- value of b+2 is ignored
    print(a,b)             --> 1   2
    a, b, c = 0
    print(a,b,c)           --> 0   nil   nil
上述範例中的最後一個指派顯示了一個常見的錯誤。若要初始化一組變數,您必須為每個變數提供一個值
    a, b, c = 0, 0, 0
    print(a,b,c)           --> 0   0   0

實際上,大多數先前的範例都有些人工。我很少使用多重指派,只是為了在單一行中撰寫多個指派。但我們通常真的需要多重指派。我們已經看過一個範例,用於交換兩個值。更常見的用法是收集函式呼叫的多個回傳值。如我們稍後將詳細討論,函式呼叫可以回傳多個值。在這種情況下,單一表達式可以提供多個變數的值。例如,在指派中

    a, b = f()
f() 回傳兩個結果:a 取得第一個,而 b 取得第二個。