1.不確定パラメータ
例 e07.lua
-- Functions can take a
-- variable number of
-- arguments.
function funky_print (...)
for i=1, arg.n do
print("FuNkY: " .. arg[i])
終わり end
funky_print("one", "two")
走行結果
FuNkY: 1つ
FuNkY: 2つ
手続きの説明
* をパラメータとして取る場合は、パラメータの数が可変であることを意味します。を引数に取る場合は、引数の数が不定であることを意味します。
* パラメータは自動的に arg というテーブルに格納されます。
* arg.n は引数の数を表します。 添え字付きの arg[] は、すべての引数を反復処理します。
2.パラメータとしてのテーブル
例 e08.lua
-- Functions with table
-- parameters
function 印刷する_contents(t)
for k,v in t do
print(k .. "=" .. v)
終わり
終わり
print_contents{x=10, y=20}
走行結果
x=10
y=20
手続きの説明
* print_contents{x=10, y=20}は括弧で囲まれていません。
* for k,v in t do このステートメントは、テーブル内のすべての値を反復処理します。
3.LuaのXMLライクなデータ記述言語化
例 e09.lua
function コンタクト(t)
-- add the contact ‘t’, which is
-- stored as a table, to a database
end
contact { 名前 = "Game Developer",
email = "hack@ogdev.net",
url = "http://..net",
quote = [[ There are
10 types of people
who can understand binary.]]
} contact { -- some other contact }
手続きの説明
* 関数とテーブルを組み合わせることで、LuaはXMLのようなデータ記述言語になります。
* e09 contact{...}は、関数を呼び出すメソッドです。は関数を呼び出すメソッドです。
* [[...]]は複数行の文字列を表現するためのメソッドです
* このアプローチの利点は、C APIを使用する場合に顕著です。セクションを別の設定ファイルに保存することができます。
4.お試しください。
例e09で述べた設定方法が使える場所を考えてみてください。