现在它看起来非常冗长:
key1 => THE_SAME_RULE,
key2 => THE_SAME_RULE,
..
keyn => THE_SAME_RULE,
有没有办法以更简洁的方式表达这一点?
答案 0 :(得分:2)
值只是数据,因此您可以拥有一个额外的变量来保存规则,然后在构建规则集时引用该变量。例如:
my $email = ['NOT_BLANK', 'EMAIL_LOOSE'];
my $result = FormValidator::Simple->check( $query => [
mail1 => $email,
mail2 => $email,
] );
理论上,您可以构建一个完整的规则库,然后在任何地方使用该库:
my $result = FormValidator::Simple->check( $query => [
mail => $AskersRules::EMAIL,
phone => $AskersRules::PHONE,
# etc.
] );
然后您就不必重复自己,并且您有一个用于重复使用和测试目的的中央库。
我认为你也可以这样做:
{ ks => [ 'key1', 'key2' ] } => THE_SAME_RULE
如果这就是你所追求的。来自fine manual:
my $result = FormValidator::Simple->check( $q => [
{ mails => ['mail1', 'mail2'] } => [ 'DUPLICATION' ],
] )
答案 1 :(得分:0)
所以你想要一个循环,并且你想要它在一个表达式中。这引起了map
。
( map { $_ => THE_SAME_RULE } qw( key1 key2 .. keyn ) )