問題タブ [monocle-scala]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
scala - scalaでモノクルを使用してボイラープレートを削減する方法
scala のレンズ ライブラリである monocle を使用して、コードの出現から12 日目にコードをリファクタリングしました。
このコードを改善することは可能ですか:
そして、ここに別の試みがあり、各フィールドの変更を分離しています
もう 1 つの質問:Map.withDefaultValue
モノクルを使用する方法はありますか?
完全なコードはこちら: https://gist.github.com/YannMoisan/b8ba25afc041d88706545527d9ec1988
scala - Scala での copy メソッドとサブタイプのポリモーフィズム
以下の Scala コンパイラ エラーを解決しようとしています。
(疑似)-Haskell (サブタイピングなし) では、これは次のようになります。
現在、ScalaZ、Shapeless、Monocle を検討しています。
一見、モノクルは論外のように見えますが (確かではありませんが)、私の直感が間違っている場合は、私が間違っていることを証明してください。
ScalaZ + Shapeless はおそらく機能する可能性がありますが、どのように機能するかはわかりません (使用したことはありません)。
1) Scala でこれを解決する最も簡単な方法は何ですか?
2) ScalaZ 自体で十分でしょうか? それとも、Shapeless だけで十分ですか?それとも2つの組み合わせが必要ですか?それとも他の方法ですか?
scala - モノクル レンズをプロパティ アクセサー スタイル文字列として出力する方法
Monocleを使用すると、Lens を定義してケース クラス メンバーを問題なく読み取ることができます。
これは、2 つのオブジェクト間の の値を比較するために使用できmd5
ます。値が異なる場合、フィールド名を含むエラー メッセージで失敗します。
Lens
レンズによって読み取られるフィールドを識別するだけで、ユーザーフレンドリーな文字列を生成する方法はありますか? フィールド名を明示的に指定することは避けたい
複数のコンポーネントを備えたレンズでも機能するソリューションがあれば、さらに良い. 私にとっては、解決策が深さ 1 までしか機能しなかったとしても、それは良いことです。
scala - レンズのコレクションを組み合わせる
Monocle は、レンズ パターンを実装する優れたライブラリ (唯一のライブラリではありません) です。これは、巨大なネストされたオブジェクトの 1 つのフィールドを変更する必要がある場合に最適です。例のようにhttp://julien-truffaut.github.io/Monocle/
次のボイラープレート
簡単に交換できます
これは素晴らしいことです。私の知る限り、マクロ マジックはすべてを上記とまったく同じコードに変換します。
しかし、複数のアクションを組み合わせたい場合はどうすればよいでしょうか? 1回の電話で通りの名前、住所の都市、会社名を同時に変更したい場合はどうすればよいですか? 次のように:
ここでレンズを再利用すると、次のコードになります。
これは、最終的にONEだけでなく、 THREE employee.copy(...).copy(...).copy(...)
呼び出しに変換されます。それをより良くする方法は? employee.copy(...)
さらに、一連の操作を適用することは本当に素晴らしいことです。Seq[(Lens[Employee, String], String => String)]
最初の要素が正しいフィールドを指すレンズであり、2 番目の要素がそれを変更する関数であるペアのシーケンスと同様です。このような一連の操作を外部から構築するのに役立ちます。上記の例の場合:
または似たようなもの...