为什么queue.get(
)会返回空列表?
class MyQueue{
var queue=List[Int](3,5,7)
def get(){
this.queue.head
}
}
object QueueOperator {
def main(args: Array[String]) {
val queue=new MyQueue
println(queue.get())
}
}
我如何获得第一个元素?
答案 0 :(得分:33)
它没有返回空列表,它返回Unit
(零元组),这是Scala在Java中相当于void
。如果它返回空列表,你会看到List()
打印到控制台而不是()
(nullary元组)。
问题是您使用了get
方法的错误语法。您需要使用=
表示get
返回值:
def get() = {
this.queue.head
}
或者这可能更好:
def get = this.queue.head
在Scala中,您通常不使用括号函数(参数列表)来查找没有副作用的Nullary函数,但是这也要求您在调用queue.get
时也要关闭括号。
您可能需要快速查看Scala Style Guide,特别是section on methods。
答案 1 :(得分:2)
有时使用
会很好拿1
而不是head,因为它不会在空列表上引起异常并再次返回空列表。