Trait

scala

DelayedInit

Related Doc: package scala

Permalink

trait DelayedInit extends AnyRef

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
Annotations
@deprecated
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-RC1

Source
DelayedInit.scala
See also

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

Linear Supertypes
Known Subclasses
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. DelayedInit
  2. AnyRef
  3. Any
Implicitly
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def delayedInit(x: ⇒ Unit): Unit

    Permalink