関数の中で返り値が指定されていない場合の扱い

Java

return文が必須。

ただし、返り値がvoid型のメソッドはreturn文がなくてもよく、返り値がvoid型のメソッドからは返り値を取得することはできない。

Scala

return文がない場合は、最後に評価された式の結果が返り値となる。

ただし、返り値がUnit型のメソッドは、最後の式によらず、常に () という値が返される。

PHP

return文がない場合は、NULLが返り値となる。

Python

return文がない場合は、Noneが返り値となる。

Ruby

return文がない場合は、最後に評価された式の結果が返り値となる。変数への代入文が最後だとしてもその代入された値が返り値になる。

Perl

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

return文がない場合は、undefined が返り値となる。

CoffeeScript

return文がない場合は、最後に評価された式の結果が返り値となる。

このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。