论坛首页 海阔天空论坛

perl中的引用类型

浏览 1476 次
精华帖 (0) :: 良好帖 (0) :: 灌水帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-11-17   最后修改:2011-06-24

概括:

可以把perl中的引用联想成c++或者java中的引用类型,可以简单的认为就是一个指针(可以想象成句柄,不是简单通过访问地址取得值),所以引用是一个标量。

 

一、取得标量的引用

$a=1;  #a代表$a的首地址,$可以想象长c中的*,$a是这个地址里的值。

$b=\$a; (可以把\想象成&)

# b 是 $a地址的地址,$b是$a的地址,$$b是$a的值。

 

当然也可以取得常量的应用 $b=\123,不过这样好像没有什么意义。

 

二、取得数组的引用

@arr1=(1,2,3); #可以理解为arr1为数组的首地址,前面加上@可以代表整个数组。

$b=\@arr1;      # b是数组首地址的地址,$b是数组的首地址,@$b代表整个数组。

$$b[0] 第一个元素。

$b->[0] 同上

 

对列表进行引用的结果只能获得列表最后一个元素的引用。

 

三、取得hash的引用

%hash1=("one"=>1,"two"=2,"three=>3");

$b=\%hash1;

原理和数组相同。

 

四、取得函数的引用

sub fun1
{
	print("good!");	
}

$a=\&fun1; #$a是函数fun1的首地址。
&$a();  #&把首地址当成是函数来解释。

 

$a = sub
{
	print("good!");	
};

&$a(); #匿名的函数,相当于$a存储了函数的首地址。

 

 

五、符号引用

$a=1;

$b="a"; #可以认为是引用的另一种书写方式,但是只有当$b在被当成引用解释的环境中才会生效。

print($$b); #输出1

 

 

 

 

 

论坛首页 海阔天空版

跳转论坛:
Global site tag (gtag.js) - Google Analytics