Lua関数使用研究
での
Lua基本構文クイックスタート
Luaでは関数の使い方が取り上げられていますが、一般的な応用にとどまっているので、深く勉強していません。
I. 関数と変数の使用法
関数は、キーワード function で定義します。そして、関数名と変数を追加します。その後にdo.がなく、endで終わることに注意してください。
関数内の変数はデフォルトではグローバル変数ですが、通常は関数内の変数は関数内で有効です。そこで、宣言に "local" を追加して、ローカルにのみ有効であることを示します。
II. 複数の結果値を返す
Luaの関数は複数の戻り値を返すことができます。これはC言語などとは大きく異なる点で、Luaは基本的に複数の代入をサポートしているからです。
私の推測では、内部的には複数の戻り値をテーブルにラップしているのだと思います。そして、代入されるときに順番に取り出されるのです。
この例を見てください。
function max(a)
local mi = 1
local m = a[mi]
for i,val in ipairs(a) do -- where i is the sequential position and val is the corresponding value
print("i= ". .i.. "val=". .val)
if val >m then
mi = i
m = val
end
end
return m,mi
end
print(max({8,10,23,12,5}))
この関数の目的は、系列の中で最大の値および添え字を返すことです。
実際には、C言語でlua_pcall(L,0,2,0)を呼び出すと、この2つの戻り値をスタックで受け取り、lua_tonumber(L,-1)とlua_tonumber(L,-2)に渡します。
III. 変数パラメータ
Luaの関数は可変数のパラメータを受け取ることができ、C言語の関数のパラメータ・リストと同様に3点(...)の使用は、その関数が可変数の引数を持つことを示しています。
Luaは関数の引数をargというテーブルに格納します。argテーブルには、引数のほかに、引数の数を示すフィールドnがあります。
例えば
function myprint(...)
local printResult = "" -- If not explicitly declared, the program will automatically check the global variables and will not find the error
print(arg.n)
for i,v in ipairs(arg) do
printResult = printResult..tostring(v)...' \t'
end
printResult = printResult...' \n'
return printResult
end
print(myprint(2,4,6,'2es'))
関連
-
Luaゲーム開発チュートリアル - タイムゾーンの問題
-
LinuxシステムへのNginx Lua環境のインストール
-
Lua プログラミング例(5)。C言語によるLuaテーブルの読み込みと追加
-
Luaでモジュールを使うためのいくつかの基本的なこと
-
LuaアプリケーションでSQLiteを使用するためのチュートリアル
-
Luaにおけるrepeat...until文の使い方を説明する .untilループの使い方を説明する
-
Luaチュートリアル(20)。LuaがCの関数を呼び出す
-
Rubyメタプログラミング技術 (Ruby Metaprogramming techniques)
-
Luaでシステムコマンドを実行する方法
-
Luaでsleep関数を実装する4つの方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン