SEの技術blogです。GCPあたりが好きです。2015/03/22ScalaにはOption型というものが存在します。今回はこのOptionとfor式の使い方についてです。Optionの使い方については前の記事を参照してください。初心者向けですが大体ポイントはおさえているかと思います。Optionの扱い方ステップアップ!背景:matchのネスト(自分含め)Scala初心者は喜んでOptionとmatchを使うのですが、そのうちあることに気づき始めます。「matchのネストがやばいんだけど・・・」これを何とかする為にはfor式という選択肢が効果的かと思います。サンプルコード(だめな例)3階層くらいネストしているentityオブジェクトがあるとして、これの一番深い部分にある値を取得して出力したいとします。}}うは!きつい・・・!ユーザが存在しており、そのユーザの会社が存在しており、その会社のカテゴリー(業種)が存在しており、そのカテゴリーの名前が存在しているならば出力。Scala中級者、上級者の人でも一度は見たことありますよね?自分の昔のコードだったりレビューでだったり・・・。ちなみに自分はこういうの書いたことありますし、レビューでOK出したこともあります。for式で回避for式は一見forと付いているので「リスト用か・・・」と思いがちですが、Optionにも使えるので使いましょう。println(categoryName)}ちなみにこう書いてもOKです。上記にも書きましたが、まず「for」と言っているのでループ用という固定観念が付いて回って、なかなか今回の利用例にたどり着けません。実際自分の周りの同僚は同じような感じでした。自分も後で気づいた感じです。for式はScalaを学んだ初めの方に触れましたが、mapやforeachの存在を知って完全に使わなくなりました・・・。これを読んだScala初心者は「for式はベテランでも使うテクニック」と覚えておいた方が良いと思います。残念ながら今回の例だとforの途中で失敗したケースに対して何かを行う、ということができません。B()する、みたいな。これに対するベストな解は見つかっていませんが、以下とか参考になるかもしれません。はこべブログてか、書いててこっちの方が良い記事な気がしてきました。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。Scala)こんにちは、@s_tsukaです。使い方まとめこんにちは@s_tsukaです。今回はSkinny-ORMについてです。...ScalikeJDBCのTxBoundaryの使い方こんにちは、@s_tsukaです。...Scala用のBeanValidationを作った話(Optionとか対応してます)こんにちは@s_tsukaです。今回はscalazのValidationの話です。...ScalaのListとJavaのListと配列(使い方や相互変換)ScalaのListとJavaのListの使い方とかについてのメモです。...Python標準csvで改行ありエスケープありCSVを読み込むすごく些細なことなのにつまづいてしまったのでメモ。誰かの役に立てば良いです。仕事で多言語対応(i18n対応)をしたのですが、なかなか苦労しました。SEの技術blogです。GCPあたりが好きです。