入門Luaプログラミングを読んでいると、次のような記述がありました。
関数内にreturn文が存在しない場合は関数の出力がないということなので、nilが戻り値になる、と考えます。
入門Luaプログラミング P.33
「と考えます」が気になったのですが、次のような関数の場合はnil
が返るのかな?と思って試してみたところ…。
function f() end
戻り値を表示してみる。
print(f())
結果。
なにも表示されない。
ぢゃ、型は?
print(type(f()))
結果、エラーになりました。
nil
を返す関数と比べてみると。
function g() return nil end
print(g())
↓
nil
print(type(g()))
↓
nil
これは、書籍の誤り…?
でも次の式は評価できます。
if f() then print("TRUE") else print("FALSE") end
↓
FALSE
戻り値のない関数の値は論理式では偽として評価される模様。
仕様なのか、仕様外なのか、あとでLuaのソースを調べてみよう。