#scala #partialfunction
Вопрос:
Поэтому я определил частичную функцию, которая будет использоваться для метода collectFirst в коллекции:
myList.collectFirst{
case A(_,_,_) => ....
case B(_,_,_) => ....
case C(_,_,_) => ....
}
Если myList содержит все A,B,C, то какое дело будет выполнено?
Комментарии:
1. Частичная функция совпадает с порядком сверху вниз и останавливается при первом совпадении.
Ответ №1:
Документация для collectFirst
указанных ниже:
Находит первый элемент коллекции, для которого определена данная частичная функция, и применяет к нему частичную функцию.
Давайте предположим val myList = List(A(...), B(...), C(...))
. В таком случае case A(_, _, _)
будет выполнено. Если у нас есть val myList = List(B(...), A(...), C(...))
, то второй случай будет выполнен, потому B(...)
что первый элемент удовлетворяет частичному выполнению.