技術と日常。

日々の気が付いたこと・気になったことを残しておきます。

[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三項演算子と同じ考え方ですね。

参考