Perl 如何将数组传递到类中?
我对如何将数组传递到包中感到困惑: 主代码Perl 如何将数组传递到类中?,perl,Perl,我对如何将数组传递到包中感到困惑: 主代码 use Person; my @array=(1,2,3); $object = new Person( "Mohammad", "Saleem",\@array); 包装 package Person; sub new { my $class = shift; my $self = { _firstName => $_[0], _lastName => $_[1], _
use Person;
my @array=(1,2,3);
$object = new Person( "Mohammad", "Saleem",\@array);
包装
package Person;
sub new
{
my $class = shift;
my $self = {
_firstName => $_[0],
_lastName => $_[1],
_array => $_[2],
};
# Print all the values just for clarification.
print "First Name is $self->{_firstName}\n";
print "Last Name is $self->{_lastName}\n";
print "Array is $self->{_array}\n";
bless $self, $class;
return $self;
}
打印数组的结果为空。如何修复代码以获取数组的值
First Name is Mohammad
Last Name is Saleem
Array is
$self->{u array}
是对array=>的引用,将其取消区分
my @array = qw(a b c);
$self->{_array} = \@array;
print "Array is @{$self->{_array}}\n";
print " foreach: $_\n" foreach @{$self->{_array}};
for( my $i=0; $i<=$#{$self->{_array}}; $i++) {
print " for: $i: $self->{_array}[$i]\n";
}
my@array=qw(abc);
$self->{u array}=\@array;
打印“数组是@{$self->{u数组}}\n”;
打印“foreach:$\n”foreach@{$self->{u array};
对于(my$i=0;$i{{u数组}};$i++){
打印“for:$i:$self->{u数组}[$i]\n”;
}
显示的代码无法打印显示的内容。它将打印Array is Array(0x…
,因为属性是arrayref,您需要取消对它的引用--print“Array is@{$self->{u Array}}\n”代码>不要使用newperson(…)
而是使用Person->new(…)
。始终有使用警告代码>和使用严格代码>开头。对于(my$i=0;$i{u数组};$i++)
如果是为我的$i(0..${self->{u数组})编写的可读性要高得多。
@DaveCross IMHO对于perl程序员来说可读性更高。IMHO perl不会问这个问题。更简单的代码对任何人来说都更具可读性:-)C风格的for
循环提供了更多引入篱笆柱错误的机会。真正的perl程序员会为我的$i($[..${self->{u array}}
-)编写,在这种情况下不需要输出的索引