gpt4 book ai didi

arrays - 将数组传递给子例程 Perl

转载 作者:行者123 更新时间:2023-12-05 08:21:34 25 4
gpt4 key购买 nike

我目前正在学习 Perl,我想将一个数组传递给子例程并打印其内容。我发现应该传递对数组的引用,但是我遗漏了一些东西:

arrayPrint($a,$b,\@array);

sub arrayPrint{
my ($a,$b,@array) = @_;

for(my $i=0; $i<=$#array;$i++){
print $file $a.$b.$array[i]."\n";
}
}

最佳答案

您不能将数组(或散列)传递给 subs。您只能将标量传递给潜艇。 (而且它们只能返回标量。)

我们可以做的是传递对数组(或散列)的引用。引用是标量。事实上,这就是您正在做的事情。

问题在于您将其分配给一个数组。总是只包含一个标量的数组只会让事情变得更复杂。它应该分配给一个标量。它应该是treated as a reference .

sub arrayPrint {
my ( $x, $y, $array ) = @_;

for my $e ( @$array ) {
say $fh "$x$y$e";
}
}

arrayPrint( $x, $y, \@array );

另一种方法是将数组的每个元素传递给 sub。

sub arrayPrint {
my ( $x, $y, @array ) = @_;

for my $e ( @array ) {
say $fh "$x$y$e";
}
}

arrayPrint( $x, $y, @array );

sub arrayPrint {
my $x = shift;
my $y = shift;

for my $e ( @_ ) {
say $fh "$x$y$e";
}
}

arrayPrint( $x, $y, @array );

关于arrays - 将数组传递给子例程 Perl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72380485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com