2017-08-28 14 views
2

私はScalaで2年間コーディングしていましたが、私は自分のコードで多くのOptionを使用しています。私はそれが非常に明確で、理解しやすく、容易に対処できると感じています。これは、通常のアプローチです:スカラオプションのパターンマッチングの選択肢はありますか?

val optString = Some("hello") 

optString match { 
    case Some(str) => //do something here! 
    case None => //do something here 
} 

私は、これはScalaのオプションを治療するための最良の方法だと思ったが、私はそうするより良い方法があるかどう聞きしたいですか?

+0

私はいつもTony Morrisの[Option Cheat Sheet](http://blog.tmorris.net/posts/scalaoption-cheat-sheet/)がこの問題について非常に読みやすいリファレンスであることを発見しました – millhouse

+0

これは素晴らしいですが、乾杯! –

答えて

3

実際には使用例によって異なります。

val opt = Some(1) 
val res: Int = opt.fold(0)(existing => existing + 1) 

あなたがfoldmapgetOrElseが気に入らない場合:私は選択肢を持っているときに私が取ると私は同じ値がOption.foldを使用することです得たSomeまたはNoneに操作を適用する必要があり、一般的なパターン逆に、同じトリックを行います:

val res: Int = opt.map(_ + 1).getOrElse(0) 

を私はOptionコンテナ内で継続したい場合は、mapは、トリックを行います。

+0

これは本当ですが、これは少し直感的ではありませんか? –

+0

@SohumSachdevあなたは 'fold'を意味しますか?私はそれが非常に直感的だと思っていますが、私はその意見は一般的に基づいていると思います。私は 'map + getOrElse'を使って別のパターンを追加しました。もっと直感的なパターンを見つけるでしょう。 –

関連する問題