【Scala】型パラメータを指定せずに呼び出せるメソッド

Option型に対して中身があるかどうかを判定するメソッドを書いている時に、Optionの中身の型は気にしないで判定する共通のメソッドがほしくなりました。

以下のように型パラメータを指定してあげれば、メソッドを呼ぶ時に型を指定しなくても型推論が効いてくれて動作しました。

scala> def require[T](param: Option[T]): T = {
     |   param match {
     |     case Some(x) => x
     |     case None    => throw new Exception
     |   }
     | }
require: [T](param: Option[T])T

メソッドを呼び出してみる

scala> val hoge: Option[Int] = Option(123)
hoge: Option[Int] = Some(123)

scala> require(hoge)
res0: Int = 123

scala> val fuga: Option[String] = Option("aaa")
fuga: Option[String] = Some(aaa)

scala> require(fuga)
res1: String = aaa

scala> val none: Option[String] = Option(null)
none: Option[String] = None

scala> require(none)
java.lang.Exception
  at .require(<console>:14)
  ... 29 elided