违法℃玩家 发表于 2017-5-18 09:00:12

perl中的引用类型

  概括:
  可以把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 第一个元素。
  $b-> 同上
  对列表进行引用的结果只能获得列表最后一个元素的引用。

  三、取得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
页: [1]
查看完整版本: perl中的引用类型