Есть ли способ заставить работать ArrowAssoc при сопоставлении с образцом? - PullRequest
9 голосов
/ 15 марта 2012

Например, если я хочу написать

1 -> 2 match {
  case 1 -> 2 => "matched"
  case _      => "not matched"
}
// error: not found: value ->

, а не чуть менее очевидный

1 -> 2 match {
  case (1, 2) => "matched"
  case _      => "not matched"
}

1 Ответ

15 голосов
/ 15 марта 2012

У меня как раз такая вещь!Мне это нравится, потому что я нахожу его более читабельным во многих случаях.

object -> {
  def unapply[A, B](pair: (A, B)): Option[(A, B)] =
    Some(pair)
}

Теперь вы можете сделать:

scala> val a -> b = 1 -> 2
a: Int = 1
b: Int = 2
...