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

画像



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



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- }
      
      






All Articles