나는 coursera에서 가르친 Martin Odersky의 스칼라 코스를 따라 가고있었습니다. 그는 반환 형식에 대한 몇 가지 훌륭한 예제를 제공하고 한 가지 나를 의아해 : 언제 scala가 Any를 반환할까요?
if(true) Tweet.comment("hello") else String("Hello") // I assume that this code will return AnyRef
그러나 의지 스칼라는 과거의 어떤을 반환 할 때
if(true) 1 else false // return AnyVal as this is the closest subtype of both primitive types
내가이 다음과 같은 가정? 그것은 언제나 돌아올 것인가?
'if (cond) 1 else "hello"' 'Any' -'AnyVal'과'AnyRef'의 두 가지 하위 타입이 있습니다. 그래서 두 개의 브랜치가 각각의 서브 타입을 리턴하면, 전체 표현식의 타입은'Any'가 될 것입니다. – Lee
@Lee이 대답은 – Ryan