問題タブ [cake-pattern]

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.

0 投票する
1 に答える
528 参照

scala - Cake パターンと Scala での関数の使用の違い - Cake パターンが役立つのはなぜですか?

Scala での DI の関数と Cake パターンの使用の違いについて疑問に思っていました。私は次のような理解に達しました。この理解が正しいかどうか知りたいです。

依存関係グラフを想像してみましょう。

1) 関数を構成要素として使用すると、グラフはノードとしての関数とエッジとしてのパラメーターで構成されます。

2) (Cake のように) 構成要素として特性を使用する場合、グラフはノードとしての特性とエッジとしての抽象メンバーで構成されます。

Cakeパターンの目的は何ですか?2 が 1 より優れているのはなぜですか? コースグレイニングです。グラフ 1 は、関数を特性にグループ化することで単純化できます。これにより、より小さく、より理解しやすいグラフ 2 が得られます。関連する概念のグループ化/クラスター化は、圧縮の一種であり、理解を生み出します (理解を得るために頭の中で保持する必要があるものを減らす必要があります)。

別の比較を次に示します (Cake とパッケージ システムの比較):

Cake は関連する関数をパッケージにグループ化することに似ていますが、名前空間 (パッケージ/オブジェクト) を使用すると依存関係が固定化されるため、パッケージ/オブジェクトを特性に置き換え、imports を自己型の注釈/抽象メンバーに置き換えます。パッケージと Cake パターンの違いは、依存関係の実際の実装は Cake を使用して変更できますが、パッケージを使用する場合は変更できないことです。

これらのアナロジーが意味をなすかどうかはわかりません。私はまだ Cake パターンと、それを私が既に理解している概念 (関数、パッケージ) に関連付ける方法に頭を悩ませようとしています。

0 投票する
1 に答える
615 参照

scala - ケーキのパターン - なぜこんなに複雑なのか

ケーキの型紙について勉強中です。

私はそれについてこのブログを読んでいます。

そのブログのコード例は次のとおりです。

を削除することで、そのコードを簡素化できますUsers

そしてそれはうまくコンパイルされます。

1) ブログのコードが複雑なのはなぜですか?

2) それはケーキのパターンを使用する慣用的な方法ですか?

3)Usersこの例でクラスが必要なのはなぜですか?

4) ケーキのパターンはこんな感じUsersですか?

5) それとも簡易版でいいの?

0 投票する
1 に答える
48 参照

scala - self と this 参照を使用して実際のケーキ パターン コードを理解する

self =>最近、ケーキのパターンととの使用の違いについて学びましたself:T =>(こちらを参照)。ここで述べたように、これらの技術と実際の Scala コードとの違いは、引き続き私に問題を引き起こします。たとえば、Inox プロジェクトから抜粋した次のコード スニペットを参照してください。

要約すると、スニペット全体はあまり意味がありません (コード内で頻繁に繰り返されるパターンです)。説明させてください。

  1. この構文は何ですか?

val interpolator: Interpolator { ... }

今まで書いてきましたがval name: Type = value、ここには同等のものはありません。

  1. Trees.this.typeタイプである必要がありますが、どのタイプですか?それは Trees trait で定義されるべきであり、this私が推測するコンテキストはコンテキストとは異なりtrait Treesます (問題 1 に関連)。ファイル補間も調べましたが、型要素がないようです。

  2. 最大の行はprotected val trees: Trees.this.type = Trees.thisです。

ここで何が起こっているのか誰か説明してもらえますか?