kla*_*ose 7 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)
...
case MixedTypes(group @_*) => {
\\How could @_* be used to check subpatterns of group?
}
Run Code Online (Sandbox Code Playgroud)
}
如果有人可以向我展示一些示例,或者将我指向一个网页,其中包含一些很棒的示例.
谢谢
记住那样的事情
Type2(3.0) match {
case t2 @ Type2(radius) => //...
}
Run Code Online (Sandbox Code Playgroud)
绑定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(_))
}
Run Code Online (Sandbox Code Playgroud)
这里,group绑定到SomeObject定义的序列MixedTypes.你可以对待就像一个无论构造函数args-for-MixedTypes是什么的序列.
| 归档时间: |
|
| 查看次数: |
377 次 |
| 最近记录: |