的确
leading
和
trailing
Queue
类,但默认情况下它们是私有的。要使其公开,请添加
val
之前:
scala> 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)
| }
| }
<console>:15: error: value leading is not a member of Queue[T]
def head = mirror.leading.head
^
<console>:18: error: value leading is not a member of Queue[T]
new Queue(q.leading.tail, q.trailing)
^
<console>:18: error: value trailing is not a member of Queue[T]
new Queue(q.leading.tail, q.trailing)
^
之后:
scala> class Queue[T] private (val leading: List[T], val 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)
| }
| }
defined class Queue
您可以详细阅读构造函数和getter
here
瓦尔
或
var
这个班。