Пытаясь заполучить этот комментарий, я написал следующий код:
def breakfast : AnyRef = {
class Chicken (e: =>Egg) {
lazy val offspring = e
}
class Egg (c: =>Chicken) {
lazy val mother = c
}
lazy val (egg: Egg, chicken: Chicken) = (new Egg(chicken),
new Chicken(egg))
egg
}
И он работает, и он делает именно то, на что вы надеетесь, что он сделает.Чего я не понимаю, так это то, почему : AnyRef
необходим?Если он не включен, компилятор (по крайней мере, 2.8 компилятор) умирает ужасной смертью:
ошибка: несоответствие типов;Найдено: Яйцо (в ленивом значении scala_repl_value), где тип Яйцо (в ленивом значении scala_repl_value) <: java.lang.Object с ScalaObject {ленивый def mother: Chicken} требуется: (некоторые другие) Яйцо (в ленивом значении scala_repl_value) forSome {тип(некоторые другие) Яйцо (в ленивом значении scala_repl_value) <: java.lang.Object with ScalaObject {lazy def mother: Chicken};тип Chicken <: java.lang.Object с ScalaObject {потомство отложенного определения: (некоторые другие) яйцо (с ленивым значением scala_repl_value)}} объект RequestResult $ line16 $ object {</p>
Может кто-нибудь объяснить, что происходитздесь?