是否可以有条件地将选项传递给perl中的方法?

前端之家收集整理的这篇文章主要介绍了是否可以有条件地将选项传递给perl中的方法?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
this question regarding Ruby类似,我想有条件地将参数传递给方法.目前,我将其配置如下:
my $recs = $harvester->listAllRecords(
    MetadataPrefix => 'marc21',MetadataHandler => 'MARC::File::SAX',set => 'pd',from => $from,until => $until,);

我想要的是能够有条件地传递from和/或until参数,具体取决于之前的代码.这在语法上不正确,但是像这样:

from => $from if ($from),until => $until if ($until),

或这个:

if ($from) {from => $from,}
if ($until) {until => $until,}

这是可能的,如果可以的话,我该怎么做呢?

解决方法

你可以使用带有列表操作数的三元?:运算符:
my $recs = $harvester->listAllRecords(
    MetadataPrefix => 'marc21',$from ? (from => $from) : (),$until ? (until => $until) : (),);

它也可能值得了解“conditional list include” pseudo-operator,在这种情况下会起作用

...
(from => $from) x !!$from,(until => $until) x !!defined($until),...

但对于大多数人来说,三元运算符表达式可能更容易阅读.

猜你在找的Perl相关文章