根据《scala编程》,第304页
class Queue[T] private (leading: List[T], trailing: List[T]){
private def mirror =
if(leading.isEmpty) new Queue(trailing.reverse, Nil)
else this
def head = mirror.leading.head
def tail = {
val q = mirror
new Queue(q.leading.tail, q.trailing)
}
def append[T](x: T)={
new Queue(leading, x::trailing)
}
}
我得到以下错误
Error:value leading is not a member of Queue[T]
def head = mirror.leading.head
相同的错误 trailing
. mirror
是类的对象 Queue
正确的?为什么它不能访问它的类参数?
1条答案
按热度按时间x6h2sr281#
的确
leading
以及trailing
是Queue
类,但默认情况下它们是私有的。把它们公之于众val
注解:之前:
之后:
您可以在这里详细了解构造函数和getter。相关要点是:
参数无
val
或者var
是私有值,仅在类中可见。