関数には戻り値と呼ばれるものが存在しています.
前節のプログラムと図を見てください.
returnは値を関数を呼び出した側に返す命令です.
よって,x + y の計算結果を呼び出し元に返しています.
つまり,変数resultには計算結果が代入されます.
Luaは複数の値を戻り値として返すことができます.
例えば,次のようなことができます.
function func()
return 10, 20
end
hoge, piyo = func()
print(hoge, piyo)
実行結果
10 20
hogeには10が,piyoには20が代入されます.
では,次のようなコードを書いた場合どうなるでしょうか.
function func()
return 10, 20
end
hoge = func()
print(hoge, piyo)
この場合,第2の戻り値である20は使われず消滅します.
実行結果
10 nil
また,次のようなコードを書いた場合はどうでしょうか.
function func()
return 10
end
piyo = 20
hoge, piyo = func()
print(hoge, piyo)
第2の戻り値はありません.
この場合,piyoにはnilが代入されます.
piyoは20ではないので注意してください.
実行結果
10 nil