admin 管理员组文章数量: 1086019
2024年4月16日发(作者:十六进制ascii码值)
Perl引用reference(运算符)
引用
引用一律声明为标量类型(即$开头的命名变量),使用运算符取引用
对引用变量的修改等同于对引用指向实际数据的修改
取标量变量引用:my $scalar_r = $scalar;
取列表的引用:my $array_r = @array;
取哈希的引用:my $hash_r = %hash;
通过引用解决列表无法嵌套的问题:
my @array1 = (10, 20, 30, 40, 50);
my @array2 = ( 1, 2, @array1, 3, 4);
因为@array1本质上只是一个标量,所以列表不会被扁平化,依旧保留了嵌套层次
对匿名列表的引用:将列表的()替换为[]:my $array_r = [1, 2, 3, 4, 5];
对匿名哈希的引用:将哈希的()替换为{}:my $hash_r = { apple => "pomme",
pear => "poire" };
对引用变量解引用通过{$var_r}实现
列表
my @array = (1, 2, 3, 4, 5);
my $array_r = @array;
my @array2 = @{$array_r}; #拷贝了数组
哈希与列表类似
对于数组引用,可以将${$ref}简记为$ref->,例如可以将${$ref}[2]简记为
$ref->[2],而将${${ref}[2]}[1]简记为$ref->[2]->[1],并进一步简记为
$ref->[2][1]
使用undef销毁一个引用:undef $ref; perl对于引用指向的数据维护一个引用计数,
当计数减到0时引用指向的数据被销毁,内存空间被释放
使用引用使得表示复杂的数据结构成为可能。这些数据结构包括矩阵(多维数组)、链
表、树、图等。
一些思考:C/C++的引用主要为了传地址。与C/C++中的指针、引用不同的是,perl
引用除了传递地址外,还是perl中将标量(scalar)、列表(list)、哈希(hash)进行一
般化(或者说统一)表示的机制,使用引用后,可以将标量、列表、哈希均表示为标量(因
为地址本质上是一个无符号整型数,这一点与C中的void*有些类似)。通过引用,就可以
版权声明:本文标题:Perl引用reference(运算符) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1713265524a626599.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论