개발
[Scala] if true 1 else false 의 타입은 뭘까?
우리로
2021. 6. 20. 09:39
scala> if (true) 1 else false
val res0: AnyVal = 1
놀랍게도 AnyVal이다.
AnyVal은 1:Int와 false:Boolean의 공통 조상이다.
이렇게 생각할 수 있다.
"아니, 뻔하게 리턴값이 1인데 당연히 Int여야하는거 아닌가?"
저 문장에서 컴파일러가 Int로 타입 바인등을 하면 나중에 저 조건문이 바뀔 경우 관련된 모든 함수를 수정해야한다.
즉 프로그램의 안정성을 해친다. 그래서 가장 상위타입으로 타입바인딩 한다.