斯卡拉。获取List的第一个元素

时间:2013-08-25 04:42:40

标签: scala list

为什么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())
  }
}

我如何获得第一个元素?

2 个答案:

答案 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,因为它不会在空列表上引起异常并再次返回空列表。