请问这句话是啥意思啊 push @d, [ @row ];

发布于 2022-10-15 10:13:59 字数 18 浏览 39 评论 0

是把row这个数组的地址赋给数组d吗

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

猫卆 2022-10-22 10:13:59

不是  是把row的内容复制一遍  然后再把新地址push到d里面
push @d, \@row  这个才是

厌倦 2022-10-22 10:13:59

回复 1# hbhswxy
push @row的引用 into @d as the last member of array.

泅人 2022-10-22 10:13:59
  1. use strict;
  2. my @list = (1,2,3,4,5,6);
  3. my @arr;
  4. push @arr,[@list];
  5. $list[5] = 7;
  6. print $arr[0]->[5],"\n";
  7. push @arr,\@list;
  8. $list[5] = 8;
  9. print $arr[1]->[5],"\n";
  10. #输出是6和8

复制代码[@list]和\@list是不同的,[@list]是新构造了一个数组引用,和原来的数组在内存中是不同地址。而\@list是直接取引用,该引用指向数组@list,所以是同一块内存地址。

悲歌长辞 2022-10-22 10:13:59

是不是说更改[@list]中的内容不会影响@list中的内容; 而更改\@list中的内容则会更改@list中的内容。
谢谢哦。

一向肩并 2022-10-22 10:13:59

本帖最后由 Perl_Er 于 2011-04-14 13:55 编辑

Taking References
An array is a defined area of storage for list values, so we can generate a reference to it with the
backslash operator:
$arrayref = \@array;
This produces a reference through which the original array can be accessed and manipulated.
Alternatively, we can make a copy of an array and assign that to a reference by using the array
reference constructor (also known as the anonymous array constructor) [...]:
$copyofarray = [@array];
Both methods give us a reference to an anonymous array that we can assign to, delete from, and modify.
The distinction between the two is important, because one will produce a reference that points to the
original array, and so can be used to pass it to subroutines for manipulations on the original data,
whereas the other will create a copy that can be modified separately.

  1.      1  #!/usr/bin/perl
  2.      2  use strict;
  3.      3  use warnings;
  4.      4  use Data::Dumper;
  5.      5  my @ary = qw/aa bb cc/;
  6.      6  my @rary = [ @ary ];
  7.      7  print Dumper \@ary;
  8.      8  print "\n";
  9.      9  print Dumper \@rary;
  10.     10  $rary[0]->[0] = 100;
  11.     11  print Dumper \@ary;
  12.     12  print Dumper \@rary;
  13. zhuj2 ( dialxtap01 ) @ /home/zhuj2/perl
  14. # ./ref.pl
  15. $VAR1 = [
  16.           'aa',
  17.           'bb',
  18.           'cc'
  19.         ];
  20. $VAR1 = [
  21.           [
  22.             'aa',
  23.             'bb',
  24.             'cc'
  25.           ]
  26.         ];
  27. $VAR1 = [
  28.           'aa',
  29.           'bb',
  30.           'cc'
  31.         ];
  32. $VAR1 = [
  33.           [
  34.             100,
  35.             'bb',
  36.             'cc'
  37.           ]
  38.         ];

复制代码

書生途 2022-10-22 10:13:59

回复 4# wxlfh

    对,利用@row 和[ ]gu构造匿名arry的引用

浮生面具三千个 2022-10-22 10:13:59

@d 里放的是row的引用

_畞蕅 2022-10-22 10:13:59

匿名引用的 用法了。学习了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文