次のようなセルの配列を含むボード構造を持つボード ゲームをモデル化するリフレーム アプリを作成しています。
{... :board-cells [{:name "cell-1" :material #object} {:name "cell-2" :material #object} ...]}
リフレームは のような素敵なキーワード構文で「自然な」部分構造の取得をサポートしてい(db :board-cells)ますが、マテリアルを取得するたびに「ドリルダウン」クエリ全体を書かなければならないことにうんざりしています(get (nth (db :board-cells) index) :material)。これには、データベースの物理レイアウトがアプリケーション ロジックに密接に結合されるという欠点もあります。データベース構造を変更することにした場合はどうなりますか? 次に、1 つではなく 10 の異なるスポットを更新する必要があります。
「仮想クエリ」を作成する公式のリフレーム方法はありますか? (db :get-nth-mat n)n はboard-cells配列内のセル番号です。と思っていdb.cljsたreg-subところだったのですが、うまくいかないようです。はい、独自のゲッターを作成できます。
(defn get-material [db index]
(get (nth (db :board-cells) index) :material))
のように呼び出します(println "mat-4=" (cell/get-material db 4))が、これはそれほど便利でも素敵でもありません(db :get-nth-mat n)
どうもありがとう。