初版はLua 5.0向けに書かれました。最新バージョンでもほとんど関連性がありますが、いくつかの違いがあります。
第4版ではLua 5.3を対象にしており、Amazonや、その他の書店で購入できます。
本の購入によってLuaプロジェクトをサポートすることにもなります。
![]() |
プログラミングにおけるLua | ![]() |
Part I. The Language 第4章 ステートメント |
代入は、変数またはテーブルフィールドの値を変更する基本的な手段です。
a = "hello" .. "world" t.n = t.n + 1
Luaでは複数代入が可能です。これは、一連の値を一連の変数に1ステップで代入することです。両方のリストの要素はコンマで区切ります。たとえば、次の代入の場合、
a, b = 10, 2*x変数
a
には値10が、b
には2*x
が代入されます。複数代入の場合、Luaは最初にすべての値を評価し、その後で代入を実行します。したがって、複数代入を使用して次の例のように2つの値を入れ替えることができます。
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
実際、先の例のほとんどは多少人為的です。私は、複数の代入を行って1行に複数の代入を記述することはめったにありません。しかし、複数代入が本当に必要な場面は数多くあります。2つの値を入れ替えるという例はすでに見てきました。より頻繁に使用されるのは、関数呼び出しから複数の戻り値を収集する場合です。後で詳しく説明しますが、関数呼び出しでは複数の値を返すことができます。このような場合、1つの式で複数の変数の値を指定できます。たとえば、次の代入の場合、
a, b = f()
f()
は2つの結果を返します。a
には最初を取得し、b
には2番目を取ります。Copyright © 2003–2004 Roberto Ierusalimschy。すべての権利は留保されています。 | ![]() |