*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 }}