Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 如何将数组传递到类中?_Perl - Fatal编程技术网

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}}
-)编写
,在这种情况下不需要输出的索引