返回语句的perl引用和取消引用
我正在学习perl,遇到了一个与引用相关的问题。 我正在处理函数get_id 如果我返回返回语句的perl引用和取消引用,perl,reference,Perl,Reference,我正在学习perl,遇到了一个与引用相关的问题。 我正在处理函数get_id 如果我返回$self->{u id},我将得到两个无法运行的数组地址(c) 在我的理解中,$a是引用,@{$a}是数组,@{$a}[0]将返回值0 这是我第一次发布关于stackoverflow的问题,因此解释可能不够清楚,对此表示抱歉 @a1 = [0] @a2 = [1] my self{ _id = [\@a1,\@a2]; } //given sub get_id(){ my $
$self->{u id}
,我将得到两个无法运行的数组地址(c)
在我的理解中,$a
是引用,@{$a}
是数组,@{$a}[0]
将返回值0
这是我第一次发布关于stackoverflow的问题,因此解释可能不够清楚,对此表示抱歉
@a1 = [0]
@a2 = [1]
my self{
_id = [\@a1,\@a2]; } //given
sub get_id(){
my $self = shift;
return $self->{_id};
}
sub print{
...
my $a = $obj -> get_id();
my $b = @{$a}[0] * 100; // c (given)
..
}
当
$arr
是对数组的引用时,@$arr
或@{$arr}
是它引用的数组。数组的第一个(或第零个)元素是$arr->[0]
(或$$arr[0]
,但箭头符号更常见)
以下
my @arr = [0];
使用单个元素创建数组,该元素是数组引用。要获取0,您需要执行以下操作
$arr[0]->[0]
可以缩短为
$arr[0][0]
要创建以0作为单个元素的数组,请使用
my @arr = (0);
顺便说一句,不要使用
$a
和$b
,它们是中使用的特殊变量。将它们用字典化可能会导致难以调试的bug。代码的第一句话实际上是@a1=[0]@a2=[1]我的自我{…}
。如果你试着运行它,会产生一大堆错误,因为你的行不会以分号结尾/
是Perl中的运算符,而不是注释<代码>我的自我{…}不是有效的语句。您不应该发布您没有实际运行的代码,因为这只会浪费时间。你发布的代码应该是可运行的,并且应该能够证明你的问题;使用警告代码>