Подтвердить что ты не робот

Scala. Получить первый элемент списка

Почему queue.get() возвращает список empy?

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())
  }
}

Как я могу получить первый элемент?

4b9b3361

Ответ 1

Он не возвращает пустой список, он возвращает Unit (нулевой кортеж), который является Scala эквивалентом void в Java. Если он возвращает пустой список, вы увидите List(), напечатанный на консоли, а не () (нулевой кортеж).

Проблема заключается в том, что вы используете неправильный синтаксис для вашего метода get. Вам нужно использовать =, чтобы указать, что get возвращает значение:

def get() = {
  this.queue.head
}

Или это, вероятно, еще лучше:

def get = this.queue.head

В Scala вы обычно оставляете круглые скобки (список параметров) для нулевых функций, которые не имеют побочных эффектов, но для этого требуется, чтобы вы оставили круглые скобки при вызове queue.get.

Возможно, вам стоит взглянуть на Scala Руководство по стилю, в частности о методах.

Ответ 2

Иногда бывает полезно использовать

возьмите 1

вместо головы, потому что он не вызывает исключение в пустых списках и снова возвращает пустой список.