マージするすべて:リボソームコードアーキテクチャ

画像

すべては例から始まります。

w //  () { function table(qIn = {}) { q["tit"] = "Wargana"; /** init- */ q["render"] = function(q){ }; qIn = merge(q, qIn); /** merge- */ if (q["m"] == "img") q = merge(q, img.table(qIn), qIn); if (q["m"] == "map") q = merge(q, gmap.table(qIn), qIn); q["render"](q); /** action- */ } } img //  1 () { function table(qIn = {}) { q["render"] = function(q) { return "img" + qIn["tit"]; }; return q; } } gmap //  2 () { function table(qIn = {}) { q["render"] = function(q) { return "map" + qIn["tit"] + this.markers(qIn); } return q; } function markers(qIn = {}) { q["layer"] = function(q) { }; qIn = merge(q, qIn); if (q["layerM"] == "cadastr") q = merge(q, cadastr.markers(qIn), qIn); return q; } } cadastr //  2.1 () { function markers(qIn = {}) { q["layer"] = function(q) { return "cadastr"; } return q; } } /** client-,  */ w.table({m : "img"}) w.table({m : "map", layerM : "cadastr"}) w.table({m : input("tableM"), layerM : input("gmapLayerM")}) 


コードの説明


  1. パラメータのデフォルト。 initセクションは、actセクションの安全な操作を保証するためにパラメーターのデフォルト値を設定します。 同時に、マージセクションでは、actセクションのパラメーター化を任意にオーバーライドできます。

     q = merge(q, ..., qIn); 

    マージリストの最後にあるのは、クライアントの最高の力を保証することです。コードがそれ自体をパラメーター化するのがどれほど困難であっても、クライアントは常に「独自のゲームに課す」ことができます。

    Init-Merge-Actスキームの主なものはInit-Actリンケージであり、Mergeはセカンダリです。

     function some(qIn = {}) { q["render"] = function(q){ return 1; }; q = merge(q, qIn); return q["render"](q); } 

    究極の系譜:
     function some(){ q["render"] = function(q){ return 1; }; return q["render"](q); } 

    ゼロへの出力:
     function some(){ return 1; } 


  2. メッシュプラグイン。 「Init-Merge-Act」の原則を使用すると、コード構造を任意のレベルのネストに編成できます。これは、merge() 'aの引数もIMAの原則に基づいているためです。

    インターフェース

     function some(){ q["isGrab"] = 0; q = merge(q, plugSome(q)); } function plugSome(qIn = {}) { q["isGrab"] = 1; q = merge(q, qIn); return q; } 

    up-host some()のinit-sectionは、デフォルトでisGrabパラメーターを使用してact-section (この場合はまったくない)の安全な動作を保証し、同時にmerge-sectionで接続されているすべてのプラグインのインターフェースを設定します

    この事前ヒープの例は、関数でのIMAプラグイン化を示しています。プラグインに渡されるqパラメーターは、上記の最高のクライアントパワーの保証を提供します。 もちろん、いつでも、qで事前変換を実行することでこのパワーを制限することも、プラグイングリッドでqのダウン包含を完全に放棄することもできます。

    名前空間

    共有バス上のメッシュプラグインは、プラグインサブネット全体に対して単一の名前空間を作成し、一方で、異なるホストで同じ署名を再利用する可能性を作成します。

     modHost { function a(){ q["isGrab"] = 0; } function b(){ q["isGrab"] = 0; } } 

    これにより、 modHost.isGrabA、modHost.isGrabBを入力する必要なくなります。

    一方、ほとんどのカムチャッカグリッドプラグイン(グリッド作成者が許可している場合)でさえ、パラメーター化アップトレース全体のリソースを使用して、コンテキストロジックに応じた動作を構築できます。

    神経系を落ち着かせるのはいつでも妄想的で、ネイムスペイゾビーのギャップを調整し、タイヤの前の合流を放棄することができます:

     function a(){ q["isGrab"] = 0; q = merge(q, b(q)); } function b(qPro = {}) { q["isGrab"] = !qPro["isGrab"]; ; /* q = merge(q, qIn); */ return q; } 

    タイピング

    アルゴリズムのモデリングをモジュールレベルから実行フローのレベルに減らしたため、タイプの選択は、すでに選択されているタイプのパラメーター化とまったく同じパラメーターになります。

     if (input.getM() == "img") imgW.table({width : 50}) 



     w.table({m : input("m"), width : 50}) 

    ホスト(上位レベルの意味の単位として)はより小さく、より多くのパラメーターになります。


戦略

機能を追加する方法


  1. お母さんのホストからinitセクションをコピーして貼り付けます。
  2. 娘のプラグインホストを作成し、そこにママホストのinitセクションのスケルトンを挿入します。
  3. 各パラメーターを再フラッシュするか、デフォルト値が適切な場合はそれを捨てます。
  4. 母親のホストのマージセクションで、娘のホストに条件付きマージを追加します。
  5. クライアントセクションでは、使い慣れたホストの新しい追加パラメーターを使用します。


機能を削除する方法


  1. マージセクションで娘をママから切断します。
  2. ホスト娘をこすります。


クロスマージの方法


 function some(qIn = {}) { // init- q["total"] = 15; // merge- // q = merge(q, someA(), someB(), qIn); qA = someA(); qB = someB(); qPro["total"] = q["total"] + qA["total"] + qB["total"] + qIn["total"]; q = merge(a, qA, qB, qIn, qPro); // act- } 

Source: https://habr.com/ru/post/J206896/


All Articles