Я должен проверить такие хеш-функции, как этот
{ foo => 65, bar => 20, baz => 15 }
против массива ссылок на хеш-выражения, выражающих условия, подобные этому
[
{ foo => { "<=" => 75 } },
{ bar => { "==" => 20 } },
{ baz => { ">=" => 5 } },
]
и вернуть истинное значение, если выполнены все условия.
Ни одна из двух структур данных не предопределена. Один основан на анализе строки в базе данных, другой - на анализе пользовательского ввода.
В случае выше, я бы возвратил true, но если бы я проверил хэш-ссылку с
[
{ foo => { "<=" => 60 } },
{ bar => { "==" => 20 } },
{ baz => { ">=" => 5 } },
]
Я бы вернул false, потому что foo в первом хэш-адресе не равен <= 60. </p>
Вопрос в том, какова лучшая стратегия для этого?
Я думаю о
- построение серии подрефер через eval
- проверка на соответствие одному из 5 различных предварительно созданных подрефсов (по одному на каждый случай для>, <, <=,> = и ==)
Я вообще иду по неверному пути? а если нет, то какие функции лучше, eval или pre-built?
Я посмотрел в Params :: Validate, но я обеспокоен тем, что это будет много накладных расходов, и мне все равно придется создавать обратные вызовы.