我多年没有使用Perl,但必须处理一些旧代码。
我制作了一个子程序,我希望将一个字符串和一个数组传递给:
sub pass_in {
my ($str, $array) = @_;
for my $e (@$array) {
print "I see str $str and list elem: $e\n";
}
return 0;
}
my @temp_arr = qw(A B C D E);
my $str = "hello";
pass_in( $str, \@temp_arr );
这很好用。但相反,我不想创建temp_arr
。是否有可能这样做:
不起作用:
pass_in( $str, qw(A B C D E));
也不起作用:
pass_in( $str, \qw(A B C D E));
所以我不必创建临时变量?
答案 0 :(得分:6)
您可以使用方括号来创建对数组的引用:
void createMapView(JPanel parent) {
MapView view = new MapView();
parent.add(view);
}
答案 1 :(得分:1)
为了传递一个in数组,你必须要传递一个数组!
qw()
不会创建数组。它只是将一堆标量放在堆栈上。您正在寻找的是[ ]
。它可以方便地创建一个数组,使用表达式初始化数组,并返回对数组的引用。
pass_in( $str, [qw( A B C D E )] );
或者,您可以重写子例程以接受值列表。
sub pass_in {
my $str = shift;
for my $e (@_) {
print "I see str $str and list elem: $e\n";
}
return 0;
}
pass_in( "hello", qw( A B C D E ) );