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

标签 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"
}

最佳答案

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

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

关于scala - 有没有办法让ArrowAssoc在模式匹配中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9725825/

相关文章:

scala - 在 Controller 中使用 Future 的最佳实践 (Play+Scala)

scala - 为什么我在这个 Scala 中得到一个 java.nio.BufferUnderflowException

swift - 是否可以在 swift 的 map 函数中使用模式匹配?

sql - 最长前缀匹配

Web 服务的 Java/Scala 多线程问题

scala - 如何使用SBT将某些文件复制到构建目标目录?

scala - 如何在swagger中隐藏参数?

java - 为什么这个多行 Java 模式不匹配?

scala - 类型模式匹配为什么变量是必须的

rust - 如何在不破坏 Rust 的情况下将枚举与参数匹配?