如果我有一个match
表达式,如何在没有明确表达的情况下自动忽略不匹配case _ =>
?有没有办法创建一个可以做这样的事情的函数?
Rex*_*err 28
你需要一种通用的方法来处理"忽略".除其他类外,选项提供了这些(除其他外).所以你可以:
val i = 7
Some(i) collect {
case 3 => "Yay!"
case 5 => "Boo!"
}
Run Code Online (Sandbox Code Playgroud)
得到None
(打字Option[String]
).所以基本上,如果你改变你x match
就Some(x) collect
可以得到你想要的功能.当人们对处理选项感到满意时,最好这样做.
Dan*_*ral 11
写一个通用的匹配器:
object Match {
def default: PartialFunction[Any, Unit] = { case _ => }
def apply[T](x: T)(body: PartialFunction[T, Unit]) = (body orElse default)(x)
}
Run Code Online (Sandbox Code Playgroud)
例:
scala> 1 to 5 foreach (Match(_) {
| case 2 => println("two")
| case 3 => println("three")
| }
| )
two
three
Run Code Online (Sandbox Code Playgroud)
您可能会感兴趣太PartialFunction
的同伴对象的方法cond
和condOpt
.
归档时间: |
|
查看次数: |
5051 次 |
最近记录: |