DelayedInit

scala.DelayedInit
trait DelayedInit

Classes and objects (but note, not traits) inheriting the DelayedInit marker trait will have their initialization code rewritten as follows: code becomes delayedInit(code).

Initialization code comprises all statements and all value definitions that are executed during initialization.

Example:

  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
  }

Should result in the following being printed:

  dummy text, printed before initialization of C
  this is the initialization code of C

Attributes

See also

"Delayed Initialization" subsection of the Scala Language Specification (section 5.1)

Deprecated
[Since version 2.11.0] DelayedInit semantics can be surprising. Support for `App` will continue. See the release notes for more details: https://github.com/scala/scala/releases/tag/v2.11.0
Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes
trait App

Members list

Value members

Abstract methods

def delayedInit(x: => Unit): Unit