けっこう昔にも話題になってたと思うんだけど、Scalaで「何も無い事を表すキーワードが多すぎる」って言う人がいるみたい?
(ぐるぐるさんの『Scalaのnull/Nothing/Nil/Noneはやりすぎなのか?』を見て思い出した)
でもねー、Javaと比べてみても、多すぎると言うほど多くは無いと思うんだよね。
Java | Scala | 説明 |
---|---|---|
null | null | 何も参照していないことを示す値。 |
null type(空型) | Null | nullの型。 |
Collections.emptyList() | Nil | 空のListインスタンス。 |
Optional.empty() | None | 空のOptionインスタンス。 |
void | Unit | メソッドで戻り値が無いときに使う型。 |
- | Nothing | 値が無い型? |
Javaに無くてScalaだけに有るのは、Nothingのみ。
少なくとも、Javaと比較して多すぎるって言ってる人は、Javaを知らないだけなのでは?
(とか言っといて、自分はJavaもScalaも基本的なことしか知らないので、他にもいっぱいあるのかもしれないけど^^;)
Scalaに無いことを表すキーワードが多いと言ってる人は、「キーワード」の多さを言ってるのであって、emptyList()や空配列でキーワード相当のことを表現できるのは当然です。
言語の話なのかライブラリまで含めた話なのか実際のコーディングの話なのか区別されてはどうでしょう
Scalaの「無いキーワード」多くて大変っていうけど、Javaで同じことしようとするともっと大変だよ っていうなら納得です
(逆に言えば、ScalaのNilやNoneもライブラリーだと思います)
で、長い分、短い単語や略語よりは分かり易いのかもしれません。