web-dev-qa-db-ja.com

スカラ。リストの最初の要素を取得

どして 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())
  }
}

最初の要素を取得するにはどうすればよいですか?

26
user2009490

空のリストを返すのではなく、JavaのUnitに相当するScalaのvoid(ゼロタプル)を返します。空のリストを返していた場合、_()_(nullary Tuple)ではなく、List()がコンソールに出力されます。

問題は、getメソッドに間違った構文を使用していることです。 _=_を使用して、getが値を返すことを示す必要があります。

_def get() = {
  this.queue.head
}
_

または、これはおそらくさらに優れています:

_def get = this.queue.head
_

In Scala副作用のないヌル関数の場合、通常は括弧(パラメーターリスト)を省略しますが、これは_queue.get_を呼び出すときにも括弧をオフにする必要があります。

Scala Style Guide 、特に methodsのセクション をざっと見てください。

35
DaoWen

時々それは使用するのが良いかもしれません

取る1

空のリストで例外を引き起こさず、空のリストを再び返すため、headの代わりに。

2
hendrik