scala implicit暗黙変換

423 ワード

object ScalaDemo extends App {


  case class Water(temp: Int)

  case class Ice(temp: Int)

  implicit def waterToIce(water: Water): Ice = Ice(water.temp)

  def getTemp(ice: Ice) = ice.temp

  val water = Water(25)

  println(getTemp(water))
}

getTempに必要なのはIceインスタンスですが、私たちが伝えたのはWaterインスタンスで、implicitが宣言したwaterToIceメソッドを自動的に呼び出し、waterをiceに変換します.この定義がなければgetTemp(water)はコンパイルできない.