Jer*_*iho 5 scala pattern-matching
例如,
val list = List(1,2,3)
list match {
case a :: b =>
case _ =>
}
Run Code Online (Sandbox Code Playgroud)
您可以使用::ParseResult或使用标记来匹配List的头部和尾部~.我该怎么做才能创建可以像之前的类一样匹配的类?
UPD:
并有可能写:
case class @ ...
List(1,2,3,4) match {
case 1 @ 2 @ 3 @ 4 =>
}
Run Code Online (Sandbox Code Playgroud)
它并不多.这两个陈述是等价的:
case x :: xs =>
case ::(x, xs) =>
Run Code Online (Sandbox Code Playgroud)
假设您希望将列表分成几率和均值,并将其调用**.您可以像这样编写提取器:
object ** {
def unapply(xs: List[Int]) = Some(xs partition (_ % 2 == 0))
}
scala> List(1,2,3) match {
| case evens ** odds => println("Evens: "+evens+"\nOdds: "+odds)
| }
Evens: List(2)
Odds: List(1, 3)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1179 次 |
| 最近记录: |