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
true
Source
DelayedInit.scala
Graph
Supertypes
class Object
trait Matchable
class Any
Known subtypes
trait App

Members list

Value members

Abstract methods

def delayedInit(x: => Unit): Unit

Attributes

Source
DelayedInit.scala