下面是我的代码:
sub print_list {
$max = $_[0];
for ($i=0; $i<$max; $i++)
{
print "$i. $list[$i][0]\t $list[$i][1]\n";
}
}
# Declaring a 2-D Array, which is just an array of 1-D arrays
@list = ( ["vi ", "Null"], ["emacs", "Null"], ["joe ", "Null" ]);
$max = $#list + 1;
print "Initial Values\n";
print_list($max);
print "\n\n";
输出:-
Initial Values
0. vi Null
1. emacs Null
2. joe Null
在上面的代码中,$max
是如何传递给一个函数的?
2条答案
按热度按时间qkf9rpyu1#
将
$max
传递到函数中不会同时将@list
数组传递到函数中。通过什么都不传递来证明这一点:@list
数组变量是全局变量。perldoc perlsub
sbtkgmzw2#
@list
数据根本没有传递到子例程中。您可以通过@list
的相同版本访问它,该版本在子例程外部可见。访问没有传递到子例程中的变量是一个非常糟糕的主意,因为子例程与调用它的代码耦合得太紧了。例如,在代码中,print_list
只能作用于名为@list
的变量。如果你把数组传递给子程序,那么它的名字就不重要了。但是你根本不需要将数组长度传递给子例程。
作为最后的改进,
foreach
循环几乎总是比C风格的for
循环更容易遵循