(상당히 유명한 내용이긴 한데. 암시를 처음보는 분들이 헤매는 내용이라 정리한다)
scala에서 double 타입의 값을 int 변수에 저장하려 하면 반드시 타입 에러가 난다.
scala> val x:Int = 18.0
<console>:11: error: type mismatch;
found : Double(18.0)
required: Int
val x:Int = 18.0
^
그래서 이를 위해서는 double을 int로 변경하는 함수가 필요하다.
scala> def doubleToInt(d:Double) = d.toInt
doubleToInt: (d: Double)Int
scala> val x:Int = doubleToInt(18.0)
x: Int = 18
값을 사용하는 시점에 컴파일러가 타입을 확인해서 암시를 적용한다.
scala> implicit def doubleToInt(d: Double) = d.toInt
doubleToInt: (d: Double)Int
scala> val x:Int = 18.0
x: Int = 18