butter7372 发表于 2017-5-17 07:24:25

perl中的克隆

  当一个perl变量用等号赋值给另一个perl变量时,将产生类似静态语言如java中的深度克隆,如下
  $a=1;
  $a1=$a;
  如果改变$a1=2
  则$a=1不改变
  以上可看出赋值操作会为新变量分配新内存,并把右值设置到内存中
  但是如果用引用
  $a2=\$a1;
  情况将不同,改变a2引用内存的值,a1将改变
  $$a2=3
  此时a1将变为3
  一般静态语言中的赋值操作,对应对象类型来说,只是声称一个引用,并未新声成一个对象,但perl则相反,赋值操作将会产生新对象,这点尤其注意
  以上是对标量进行测试的,换成数组,则可更明显的看出差别
  如:
  @a=1..3;
  @a1=@a;
  $a1=-1;
  print @a,"\n";
  输出123,而java中则变成-123
页: [1]
查看完整版本: perl中的克隆