[Scala]早期returnをしない方がScalaらしいコードらしい
タイトルの件、Javaだと「もし~~なら~~、それ以外なら~~を返す」という事をしたいときに、早期returnにて実装することがあります。
public String hoge(boolean isFoo) { if (isFoo) { return "FOO!"; } return "BAR!"; }
Scalaでも同じように実装できますが
def hoge(isFoo: Boolean): String = { if (isFoo) { return "FOO!" } "BAR!" }
Scalaのドキュメントにある通り、returnは必要なければ好まれないようです。
メソッド本体にある最後の式はメソッドの戻り値になります。(Scalaにはreturnキーワードはありますが、めったに使われません。)
言語特性を活かして、以下のように書けます。
def hoge(isFoo: Boolean): String = { if (isFoo) { "FOO!" } else { "BAR!" } }
Scalaの場合if
が「式」なので、関数の最後にあるif
が丸ごと戻り値となるためです。
Javaの三項演算子と同じ考え方ですね。