[[lua_reference_watch_out_point]]
*Luaリファレンス 要注意点 ~関数~ [#md26225b]

**関数とreturn [#ldeea1c7]
-C,Perl,Pythonなどと異なり, LUAではreturnを「ブロックの最後]にしか記述出来ない。
#sh(lua){{
function abc(x)
    return             ---->    エラー。ブロックの最後じゃないのにreturnしている。

    print(x)
end
}}
-このため、デバッグ時等で、一時的にreturnしてしまいたい場合は、以下のようにブロック化する。
#sh(lua){{
function abc(x)
    do return end      ---->    OK。

    print(x)
end
}}

**複数の値のreturn と ( ) [#h3bd5bf6]
-return ステートメントで''( )を使ってしまうと、値が1つしか返らないので注意!!''
#sh(lua){{
function abc(x, y)
    return (p(x))   -- p(x)が元来複数の値を返す関数だったとしても、( )をつけることで最初の1つに絞られてしまう。
end
}}
-複数の返り値を持つ関数を、安易に( )でくくってしまっても同様に値が1つに絞られてしまうので注意
#sh(lua){{
function abc(x,y)
    return x+10, y+10     -- 2つの値を返す、関数
end

local a,b = ( abc(1,2) ) -- 安易にカッコでくくると値が最初の1だけになる。a=11, b=nil となってしまう。 

print( abc(1,2) ) --> 11, 12
print( ( abc(1,2) ) ) --> 11
}}


トップ   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS