(상당히 유명한 내용이긴 한데. 암시를 처음보는 분들이 헤매는 내용이라 정리한다)


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





Posted by '김용환'
,