/** A lazy cons cell, from which streams are built. */
@SerialVersionUID(-602202424901551803L)
final class Cons[+A](hd: A, tl: => Stream[A]) extends Stream[A] with Serializable {
override def isEmpty = false
override def head = hd
@volatile private[this] var tlVal: Stream[A] = _
def tailDefined: Boolean = tlVal ne null
override def tail: Stream[A] = {
if (!tailDefined)
synchronized {
if (!tailDefined) tlVal = tl
}
tlVal
}
}
_
中的通配符@volatile private[this] var tlVal: Stream[A] = _
代表什么?
答案 0 :(得分:2)
通配符为var
分配一个默认值,这使得变量初始化并可供使用;据我所知,从null
开始的AnyRef
和AnyVal
的'默认'值(0
的数字{{1}对于false
等)。
您不能声明已声明但未定义的局部变量。示例说明卷:
Boolean