3

データベース内の一部のデータを表す一連のオプションを備えた 3 レベルのネストされたケース クラス モデルがあります。それは本質的に次のとおりです。

case class User(settings: Option[Settings])
case class Settings(keys: Option[List[KeySet]])
case class KeySet(privateKey: String, publicKey: String)

いくつかの理解またはチェーンflatMap(別の Option オブジェクト内の Scala Option オブジェクト) を使用して、これから深くネストされたフィールドを取得する方法を理解しています。また、レンズ ライブラリを使用してそれを更新する方法も理解していますが、ツリー内のいくつかのものがまだ存在しない場合でも、それらの s をNone自動的に作成します。Some

たとえば、keysリストに追加したいが、ユーザーがまだ何も設定していない場合はどうすればよいsettingsでしょうか? Some(settings)ある意味で、フィールドとフィールドを自動的に作成することは可能Some(keys)ですか?

多くのパターンマッチングでそれを行う方法についてのアイデアはありますが、これは、1. コードが右方向にずれていること、および 2.オプションを使用していない、mapまたはほとんど使用していないため、間違っているようです。flatMap

これは、レンズ ライブラリを単独で使用することで可能ですか? 私はそれが不可能かもしれないことをここで読みました:https://github.com/julien-truffaut/Monocle/issues/215モノクルの場合のようにOptionNone. 多分私は問題について別の方法で考える必要がありますか?

ありがとう

4

1 に答える 1