関数の中で返り値が指定されていない場合の扱い
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文がない場合は、最後に評価された式の結果が返り値となる。