object
LateVal
Type Members
-
class
LateVal[X] extends AnyRef
Value Members
-
final
def
!=(arg0: AnyRef): Boolean
-
final
def
!=(arg0: Any): Boolean
-
final
def
##(): Int
-
final
def
==(arg0: AnyRef): Boolean
-
final
def
==(arg0: Any): Boolean
-
implicit
def
LateVal[X](x: LateVal[X]): X
-
final
def
asInstanceOf[T0]: T0
-
def
clone(): AnyRef
-
final
def
eq(arg0: AnyRef): Boolean
-
def
equals(arg0: Any): Boolean
-
def
finalize(): Unit
-
final
def
getClass(): Class[_]
-
def
hashCode(): Int
-
final
def
isInstanceOf[T0]: Boolean
-
final
def
ne(arg0: AnyRef): Boolean
-
final
def
notify(): Unit
-
final
def
notifyAll(): Unit
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
-
def
toString(): String
-
final
def
wait(): Unit
-
final
def
wait(arg0: Long, arg1: Int): Unit
-
final
def
wait(arg0: Long): Unit
Inherited from AnyRef
Inherited from Any
A late val is a single-assignment val that can be assigned after definition. Subsequent assignments raise an error, and dereferencing a late val before assignment also raises an error.
val x = new LateVal[Int] ... x.deref // BAD x.assign(3) // Good x.deref // Good x.assign(4) // BAD
A LateVal[X] can be used as an X, via the implicit conversion LateVal. Moreover, the method names LateVal.assign and LateVal.deref are chosen to minimize shadowing whatever methods will be available on X; in particular, LateVal.set and LateVal.get would shadow methods for many common choices of X.
val x = new LateVal[Int] x.assign(3) x + 1
val x = new LateVal[Map[Int, String]] x.assign(Map(1 -> "one")) x.get(1)