Это мотивационный пример, учитывая:
List((1,2), (2,1), (3,1))
Я хотел бы вернуться:
List((1,2),(3,1))
Я пытался сделать это несколькими способами. Первый:
List((1,2), (2,1), (3,1)) map { case (a,b) => if (a > b) (a,b) else (b,a) }
distinct
Затем я попытался использовать кортеж:
List((1,2), (3,4), (2,1)) map { t => if (t._1 <= t._2) t else t.swap }
затем определение частичной функции немного по-другому:
val pf: PartialFunction[(Int,Int), (Int,Int)] = {
case (i, j) if i >= j => (j, i)
}
List((1,2), (3,4), (2,1)) map pf distinct
Есть ли способ применить PartialFunction только к элементам, для которых определено? или каким-то образом соединить PF с Identity.
collect
делает именно это. Но я думаю, вы имеете в виду и оставляете элементы, для которых он не определен, без изменений? - person The Archetypal Paul   schedule 09.12.2014collect
, но это ответ на ваш вопрос, как указано. Однако вы этого не хотите - вы также хотите, если не определено использование идентификатора - person The Archetypal Paul   schedule 09.12.2014