Scala 模式匹配:对于某些情况不执行任何操作

Man*_*oid 0 scala pattern-matching

我必须根据模式匹配块中的情况执行一些操作,但仅限于选择性情况,其余情况无需执行任何操作。那么剩下的情况就直接 return() 就可以了吗?像这样的东西:

    val x = ....
    val y = ....
    (x, y) match {
              case (Some(number), Some(text)) => {
                ...... 
              }
              case (Some(number), None) => {
                ......
              }
              case (_, _) => () // do nothing
            }
Run Code Online (Sandbox Code Playgroud)

Dim*_*ima 5

取决于你所说的“好”是什么意思。如果您问它是否可以编译,您可以自己轻松回答这个问题,只需在 REPL 中运行一些片段,然后发现您甚至不需要返回一个单元。像这样的东西工作得很好:

    "foo" match { 
        "bar" => "baz"
        "bat" => 1500
         _ => 
     }
Run Code Online (Sandbox Code Playgroud)

然而,如果您所说的“好”是指这是否是一个好主意,那么答案是“可能不是”。正如评论中提到的,这不是类型安全的,而且纯粹是副作用并且不是引用透明的。可能有更好的方法来做你想做的事。