Luaプログラミング入門

関数中に関数を定義する Slideshow

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
 by nishio

Comment Form:

コメント・トラックバック規約を必ずお読みください。

 

Comments:

2009/09/23 17:15:41 mkuwata
例の関数addの定義では、return文がありませんが、この場合でも評価結果の値は戻されているようです。明示的にreturn xと記述しても同じ結果なのですが、最後のreturnを省略したときの戻値は最後のステートメントの結果なのでしょうか?

Trackback URL: http://karetta.jp/trackback/book/230312/230341

Trackbacks:


このサイトについて|ヘルプ|Q&A|個人情報保護|プライバシーポリシー|利用規約|コメント・トラックバック規約|削除規程|広告掲載
Copyright (c) 2005-2007 Time Intermedia Corporation