4

次のパターン マッチングを実行したいと思います。

minReachableInt match {
   case None | Some(n) if n <= 0 =>
     println("All positive numbers can be reached")
   case _ =>
     println("Not all positive numbers can be reached")
}

もちろん、 では n が一致しないため、コンパイルされませんNone。しかし、後続のコードでは必要ないので、コードを複製せずに、想像できる最も美しい方法で結果を得るにはどうすればよいでしょうか?

4

1 に答える 1

10

パターンマッチング構文で実行できることには制限があるため、すべてのロジックを表現するためにそれを使用しようとしないでください。

この問題は、次を使用して表すことができますfilter

minReachableInt filter (_ <= 0) match {
  case None =>
    println("All positive numbers can be reached")
  case _ =>
    println("Not all positive numbers can be reached")
}
于 2012-12-19T11:07:54.677 に答える