寻找如何使用的示例@_*&引用;在Scala中进行模式匹配时

寻找如何使用的示例@_*&引用;在Scala中进行模式匹配时,scala,operators,pattern-matching,Scala,Operators,Pattern Matching,我一直在搜索一些示例,但找不到任何示例演示@*在模式匹配案例类时的用法 下面是我所指的应用程序的一个示例 def findPerimeter(o: SomeObject): Perimeter = o match { case Type1(length, width) => new Perimeter(0, 0, length, width) case Type2(radius) => new Perimeter(0, 0, 2*radius, 2*radius) ...

我一直在搜索一些示例,但找不到任何示例演示@*在模式匹配案例类时的用法

下面是我所指的应用程序的一个示例

def findPerimeter(o: SomeObject): Perimeter = o match {
case Type1(length, width) =>
  new Perimeter(0, 0, length, width)
case Type2(radius) =>
  new Perimeter(0, 0, 2*radius, 2*radius)
...

case MixedTypes(group @_*) => {
  \\How could @_* be used to check subpatterns of group?
}
}

如果有人能给我看一些例子,或者给我指一个有一些例子的网页,那就太好了


感谢Wampler/Payne为Scala编程

还有另一个问题:


还有每日Scala的博客帖子。

记住

Type2(3.0) match {
  case t2 @ Type2(radius) => //...
}
radius
绑定到值
3.0
,并将
t2
绑定到匹配的Type2实例

以您的例子:

def findPerimeter(o: SomeObject): Perimeter = o match {
  case Type1(length, width) => new Perimeter(0, 0, length, width)
  case Type2(radius) => new Perimeter(0, 0, 2*radius, 2*radius)
  // ...
  // assume that Perimeter defines a + operator
  case MixedTypes(group @ _*) => group.reduceLeft(findPerimeter(_) + findPerimeter(_))

}
这里,
group
绑定到定义
MixedTypes
SomeObject
s序列。您可以将其视为MixedTypes的构造函数参数的序列