Я проходил курс scala от Coursera, который преподавал Мартин Одерски. Он привел несколько блестящих примеров о типах возврата, и одна вещь меня озадачила:
if(true) 1 else false // return AnyVal as this is the closest subtype of both primitive types
Я предполагаю, что следующее:
if(true) Tweet.comment("hello") else String("Hello") // I assume that this code will return AnyRef
Однако когда scala вернет Any? Вернется ли он когда-нибудь?
if (cond) 1 else "hello"
. Существует два подтипаAny
—AnyVal
иAnyRef
, поэтому, если две ветви возвращают подтип каждого из них, типом всего выражения будетAny
. - person Lee   schedule 18.05.2014