scala - 这个 Scala 符号 ->_ 是什么意思

标签 scala

有人可以帮助我理解这段代码吗

case "Foo" Foo(data) -> _ => { /*.. implementation */}

我看到了 Foo.unapply(data) 的用法
但我不明白这部分是什么

-> _



如何以及何时使用它

最佳答案

看起来有人为了自己的利益太聪明了。假设我有以下内容:

case class Foo[A](command: String, data: A)

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

现在我可以这样写:
scala> Foo("foo", (42, 'whatever)) match {
     |   case "foo" Foo(data) -> _ => data
     | }
res0: Int = 42

多亏了 Scala 中缀模式的魔力,这等价于以下内容:
Foo("foo", (42, 'whatever)) match {
  case Foo("foo", data -> _) => data
}

除了中缀版本肯定会混淆和惹恼你的代码的 future 读者。

关于scala - 这个 Scala 符号 ->_ 是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18491574/

相关文章:

Scala Swing 日期选择器

scala - Slick 3.1.1 模糊隐式值涉及过滤器和隐式 CanBeQueryCondition

Scala:使用(并行)方法加快文件的字数统计

scala - 为什么在 Spark GraphX 中执行 Pregel 时出现 TypeMismatch 错误?

postgresql - 斯卡拉java.lang.NoClassDefFoundError : org/postgresql/Driver

scala - 为什么在 Play Framework 中使用 @Singleton 而不是 Scala 的对象?

string - scala string.split 不起作用

scala - 玩 Scala : Catch HTTP JSON request error

Scala - 用索引压平列表以制作 Tuplets

scala - 查找没有实例的 Product 类型的数量