У меня есть код, аналогичный приведенному ниже:
def walkTree(list:List[Command]) {
list match {
case Command1::rest => doSomething(); walkTree(rest)
case Command2::rest => doSomethingElse(); walkTree(rest)
case Nil => ;
}
}
Я также знаю, что вы можете сопоставить шаблон для определенного типа и одновременно назначить переменную :
try {
...
}
catch {
case ioExc:IOException => ioExc.printStackTrace()
case exc:Exception => throw new RuntimeException("Oh Noes", e);
}
Есть ли способ объединить и то и другое, как показано ниже:
def walkTree(list:List[Command]) {
list match {
case cmd1:Command1::rest => doSomething(); walkTree(rest)
case cmd2:Command2::rest => doSomethingElse(); walkTree(rest)
case Nil => ;
}
}
Или мне нужно извлечь каждый элемент списка перед сопоставлением?