JavaScriptの専門家の実装の詳細は次のとおりです。JavaScriptで複雑なデシジョンテーブルを実装する
私は、フィールドの値は、入力の7ビットの値に複雑に依存しているフィールドの数とUIを持っています。ユーザがアプリケーションの多くを見て、常に変化している可能性のある128の値のどれに表示されるべきでしょうか?
今、私がされたif-then-elseくして決定木として実装され、このためにきましたが、それは権利を取得するのは難しいの要件の変更や並べ替えの下に脆いです。
は私が考えた一の実施のアプローチは、から0x7Fには0x0の値の配列を作成し、各位置での閉鎖を格納することである -
var tbl; // initialize it with the values
...
tbl[0x42] = function(){ doAThing(); doAnotherThing(); }
、その後でそれらを呼び出す
tbl[bitsIn]();
これは、少なくとも決定ロジックを一連の割り当てにします。
質問:良い方法がありますか?
(更新:?。神聖ながらくた、how'd 'AJAX iphoneタグ' について、その行がそこに入るのも不思議はそれが少し不可解だった)
更新
だから何が起こりました?基本的に私は第4の選択肢を取ったが、私がチェックしたものと似ていた。論理は十分に複雑で、私は最終的にサーバで真理値表を生成するPythonプログラムを作成しました(実際にはGroovyコードを生成し、ホストはGrailsアプリケーションです)、決定ロジックをサーバに完全に移動します。 JavaScript側では、さまざまなフィールドの値を含むJSONオブジェクトを単純に解釈します。
結局、これはおそらく1回の以上の繰り返しを通過し、ビットのベクトルでインデックス化するデータベーステーブル内のデータを、となります。
テーブル駆動部分が確かに出てきています。既に表示されている特定の要件が変更されています。の変更があります。
を、あなたのリファクタリングの考えは健全であるが、TBH Iあなたの説明から、あなたが必要としていることは分かりません:P –
各ビットは特定のアクションを決定しますか?もしそうなら、なぜ[0x01、0x02、0x04、0x08、0x10、0x20、0x40]に対して値をビット単位でANDしないでください。 – draeton
@Martin、ポイントは、これは私のテーブルよりも柔軟な方法ですラムダの –