有没有办法让ArrowAssoc在模式匹配中工作?

时间:2012-03-15 18:24:27

标签: scala pattern-matching

例如,如果我想写

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 个答案:

答案 0 :(得分:15)

我有这样的事情!我喜欢它,因为在很多情况下我发现它更具可读性。

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