渡されたデータ構造を真偽値に減らす基本テストの構造化入力からコード参照を作成できる既存のCPANライブラリはありますか?コンストラクタから渡された属性を渡されたデータ構造体の属性にマップする必要があります(例:[attribute => 'something']
は、渡されたスカラーの$_->{something}
にマップされます)。定義済みの規則を使用してリダクションコードリーダを作成するライブラリ
私は何かを書くことができましたが、私はそれを処理するためにCPANで何も見つけられません。本当に驚いています。誰かがこの種のことをするライブラリを知っていますか?
my @def = ([ [ attribute => 'something' ], '>', 50 ],
'and',
[ [ attribute => 'something_else' ], 'eq', 'match' ],
);
my $coderef = Reducer->new(@def);
my @items = ({ something => 75,
something_else => 'match',
},
{ something => 20,
something_else => 'match',
},
{ something => 75,
something_else => 'no match',
},
{ something => 90,
something_else => 'match',
},
);
for my $item (@items) {
$coderef->($item) ? say 'true' : say 'false';
};
出力:この問題または約
true
false
false
true
私はコンパイルコードリファレンスに傾いた唯一の理由は、プログラムの生活の上にそれらに対して実行する多くのチェックと、比較的少数のルールがあるように予定されていることである、と私は解釈していないようにするために期待していましたそれが何かチェックされるたびにルール参照。しかし早すぎる最適化であるかもしれません、そして、私はその考えを断っても構いません。比較のためだけに、あなたが推奨するその他の検証モジュールは何ですか? – Oesor
私はいくつかの他のもの(それらを使用する無関係なコードで配布されることが多い)を見たことがあるのは分かっていますが、私はそれを思い出すことができません。 Params :: Validateは確かにスピードデーモンではなく、 "グローバルオプション"インターフェースはIMOが本当にうまく設計されていないので、自分で構想したコンパイルされたコードレコーダーを作成することをお勧めします。 – ysth
ええ、Params :: Validate PODをスキミングした後、私はそれに向かって傾いています。これが本当に扱うべきことは、 'if(scalar @ {$ _}> 10)'や 'if((uniq map {$ _->)}}のようなもので任意の配列参照を見るためにconfigから定義できることです。 {foo}} @ $ _)<3) 'などと、コールバックを実行するためにtrueを評価する場合です。私はちょうど私がそれをするためにプラグインする何かを見つけていない驚いています。 – Oesor