Сопоставление с образцом более идиоматично в Scala и легче защищает вас от граничных условий.
В коде
private def next() {
val item = agenda.head
agenda = agenda.tail
curtime = item.time
item.action()
}
И agenda.head
, и agenda.tail
будут выбрасывать NoSuchElementException
исключение, если agenda
- пустой список, поэтому, чтобы он действительно работал, вам нужно добавить проверку для этого.
Версия сопоставления с образцом на самом деле имеет похожую проблему (как отмечено в th комментариях),но я нахожу исправление, так как все, что вам нужно сделать, это добавить еще один шаблон:
private def next() {
(agenda: @unchecked) match {
case item :: rest =>
agenda = rest
curtime = item.time
item.action()
case _ => {}
}
}