1

我正在查看一些尝试学习该语言的 Scala 代码。遇到如下所示的一块:

 case x if x startsWith "+" => 
          val s: Seq[Char] = x
          s match {
            case Seq('+', rest @ _*) => r.subscribe(rest.toString){ m => }
          }

在这种情况下,究竟在rest @ _*做什么?我知道这是pattern match一个序列,但我并不完全理解序列中的第二个参数应该做什么。

被要求提供更多上下文,所以我添加了我在其中找到的代码块。

4

2 回答 2

5

如果您以前遇到过_*将 Seq 作为可变参数应用于某些方法/构造函数的形式,例如:

val myList = List(args: _*)

那么这是“unapply”(更具体地说,搜索“unapplySeq”)版本:获取序列并转换回“varargs”,然后将结果分配给rest.

于 2013-10-04T01:55:03.130 回答
2

x @ p匹配模式p并将整个匹配的结果绑定到x. 此模式匹配Seq包含'+'后跟任意数量 ( *) 的未命名元素 ( _),并绑定restSeq这些元素中的 a。

于 2013-10-04T01:45:30.073 回答