perl中参数过多的函数
我有一个函数有太多的参数。我看过PHP中的解析方法,该方法将类对象传递到函数中,而不是传递许多参数。perl有什么方法吗perl中参数过多的函数,perl,Perl,我有一个函数有太多的参数。我看过PHP中的解析方法,该方法将类对象传递到函数中,而不是传递许多参数。perl有什么方法吗 谢谢有很多方法可以解决这个问题-如您所知,如果您想使用基本的有序参数,perl已经有了 然而,有时候你想要更整洁一点的东西——你可以传递一个散列来代替 use Data::Dumper; sub myspecial { my %parameters = ( size => $default_size, toggle =
谢谢有很多方法可以解决这个问题-如您所知,如果您想使用基本的有序参数,perl已经有了 然而,有时候你想要更整洁一点的东西——你可以传递一个散列来代替
use Data::Dumper;
sub myspecial {
my %parameters = ( size => $default_size,
toggle => 1,
@_ );
print Dumper \%parameters;
}
然后,您可以将子例程作为参数调用:
myspecial ( size => 42, cabbage => "green" );
因为'size'参数是在sub中定义的,但是@u被添加到哈希声明的末尾,所以传入的任何大小都将覆盖默认值
通过这种方式,您可以按任意顺序给出命名参数
但解决这个问题的方法总是多种多样的——有时你会想传入一个对散列或对象的引用 你的问题没有任何细节-太宽泛,无法详细回答
use Data::Dumper;
sub myspecial {
my %parameters = ( size => $default_size,
toggle => 1,
@_ );
print Dumper \%parameters;
}
也许下面的代码应该可以满足您的需求
use strict;
use warnings;
use feature 'say';
my $debug = 0;
my %hash;
my @fields = qw( first last age speciality phone email address );
while( <DATA> ) {
@hash{@fields} = split ':';
say Dumper(\%hash) if $debug;
details(\%hash);
}
sub details {
my $data = shift;
foreach my $field (@fields) {
printf "%-15s : %s\n", $field, $data->{$field};
}
}
__DATA__
John:Smith:35:Web Developer:(1) 641-723-3472:john.smith@inter.net:2241-2832 Moon crescent, 50003 Iova, US
Alice:Gomer:28:Accountant:(1) 641-723-7391:alice.gomer@inter.net:2241-630 Jupiter drive, 50006 Iova, US
你能不能稍微解释一下你所拥有的和正在做的事情?当然,您可以将参数捆绑到各种数据结构或对象中,但是有很多方法可以做到这一点或其他一些。这个问题太宽泛了,我建议你编辑它,以便很好地解释你拥有/需要什么。我觉得参数太多的函数不容易阅读和使用。好的。但是有很多方法来组织它——如何做好这一点在很大程度上取决于函数的功能和参数的细节。将它们放入数组还是散列?或者是一个带有arrayrefs的散列,用来对不同类型的参数进行分组?或者是一节课?或者程序应该重新组织,这样就不会有那么多松散的参数,而是会有一些对象?你问这样的问题很好,因为函数的良好接口非常重要。但是有很多方法可以解决这个问题,一般来说,问题中的更多细节将非常有助于提出更具体、更有效的建议。。。然后用默认值搜索数据库命名参数列表,这就是我想要的。谢谢@sobrique