関数の中で返り値が指定されていない場合の扱い
Java 2016/09/11
return
文が必須。
ただし、返り値がvoid
型のメソッドはreturn
文がなくてもよく、返り値がvoid
型のメソッドからは返り値を取得することはできない。
Scala 2016/09/11
return
文がない場合は、最後に評価された式の結果が返り値となる。
ただし、返り値がUnit
型のメソッドは、最後の式によらず、常に ()
という値が返される。
PHP 2013/09/06
return
文がない場合は、NULL
が返り値となる。
Python 2013/10/14
return
文がない場合は、None
が返り値となる。
Ruby 2013/09/06
return
文がない場合は、最後に評価された式の結果が返り値となる。変数への代入文が最後だとしてもその代入された値が返り値になる。
Perl 2014/12/29
return
文がない場合は、最後に評価された式の結果が返り値となる。変数への代入文が最後だとしてもその代入された値が返り値になる。
if
文自体は値を返す式ではないが、サブルーチンの最後の文がif
文の場合、
if
文の中の最後の式がサブルーチンの返り値になる。
本体が何もないサブルーチンや、返り値を指定せずにreturn
だけを書いた場合は、
undef
が返り値となる。
なお、return;
と return undef;
には微妙な違いがあり、関数をリストコンテキストの中で評価すると結果が異なる。
return;
だとリストコンテキストでは空のリストになり、
return undef;
だと undef
が1つ含まれるリストになる。
sub f {
return;
}
my @ret = f;
print Dumper \@ret;
# 出力結果
# $VAR1 = [];
sub f {
return undef;
}
my @ret = f;
print Dumper \@ret;
# 出力結果
# $VAR1 = [
# undef
# ];
JavaScript 2013/09/06
return
文がない場合は、undefined
が返り値となる。
CoffeeScript 2013/10/16
return
文がない場合は、最後に評価された式の結果が返り値となる。