Трейт scala.DelayedInit
@deprecated("Семантика DelayedInit может быть неожиданной. Поддержка `App` будет продолжена. См. заметки к релизу для получения более подробной информации: https://github.com/scala/scala/releases/tag/v2.11.0", "2.11.0")
trait DelayedInit
Классы и объекты (но не трейты) унаследующие трейт DelayedInit будут иметь код инициализации, переписанный следующим образом: code становится delayedInit(code).
Код инициализации включает в себя все операторы и определения значений, выполняемые во время инициализации.
Пример:
trait Helper extends DelayedInit {
def delayedInit(body: => Unit) = {
println("dummy text, printed before initialization of C")
body // evaluates the initialization code of C
}
}
class C extends Helper {
println("this is the initialization code of C")
}
object Test extends App {
val c = new C
}
Что должно привести к выводу:
dummy text, printed before initialization of C this is the initialization code of C
| См. также | "Подраздел «Отложенная инициализация» спецификации языка Scala (раздел 5.1) |
|---|---|
| Устаревшее | |
| Супертипы | |
| Известные подтипы |
Абстрактные методы
Исходник
© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.1.1/scala/DelayedInit.html