ScalaのNothing型

ScalaのNothing型は全てのクラスのサブタイプということになっている。戻り値の型指定にNothingを指定すると何も返さないことが期待される(何もしないメソッドの戻り値はUnitとなるので、Nothingを返すメソッドは作れない?)。

下のコードの様に戻り値にInt型を期待されているメソッド中で、throwはInt型もしくはそのサブタイプを型とする値を返す必要がある。ここでthrowはNothingを返すようになっている。全てのクラスのサブタイプであるNothingはIntのサブタイプとしても動作するので戻り型の問題はなくなる。面白設計だ。