関数中に関数を定義する 応援する  Luaでは関数内に関数を定義することも可能です.
function func(x)
local function get()
return x
end
local function add(value)
x = x + value
end
return get, add
end
firstGetValue, firstAddValue = func(10)
secondGetValue, secondAddValue = func(30)
print("first value : " .. firstGetValue() )
print("second value : " .. secondGetValue() )
firstAddValue( 15 )
secondAddValue( 20 )
print("first value : " .. firstGetValue() )
print("second value : " .. secondGetValue() )
func関数はgetとadd関数を戻り値として返しています.
ここでlocalという新しいキーワードが登場しました.
このlocalについては有効範囲の章で詳しく説明します.
簡単に説明しておきますと,localというキーワードを付けることで
ローカル変数(またはローカル関数)を作成することができます.
要は,get関数もadd関数もfunc関数内からでしか呼び出せないと
いうことです.
実行結果
first value : 10
second value : 30
first value : 25
second value : 50
| |
|