perl学习笔记-解引用小结
2010-11-09 21:49
316 查看
目前正在自学perl,看到关于dereference的一些写法:
@array1 = qw /a b c/;
@array2 = qw /d e f/;
@array = {/@array1, /@array2};
$array_ref = /@array;
假如要访问array1中的第2个元素,可以有如下几种写法:
$array[0][1] 写法一
${$array_ref}[0][1] 写法二
$$array_ref[0][1] 写法三
$array_ref->[0]->[1] 写法四
$array_ref->[0][1] 写法五
写法二或许是初学者不熟悉perl时使用的方法,先写出写法一,然后用数组引用{$array_ref}代替数组名array即可得到写法二。
这里应用了perl中数组名和数组引用相互替换的规则。
写法三是写法二的改进,也是另一个规则的应用,即括号中如果是标量,则可以省略括号。
写法四也是对写法二的改进,可以使用->来取代{},以此方便使用。
写法五是对写法四的改进,即省略->,使得表达形式更加简介紧凑。
这里有人可能会问为什么写法五中的第一个->不能省略?
其实很简单,如果省略了第一个->,那么就变成了$array_ref[0][1],此时perl就会把array_ref误认为是数组。
可以说第一个->是perl区分数组和数组引用的辨别标准:
$array[0][1] 无->,因此array是数组
$array->[0][1] 有->,因此array是数组的引用
那么可能又会有人质疑, $array_ref->[0] == /@array1,也是引用啊,为什么可以省略第二个->,而把
$array_ref->[0]->[1] 写成$array_ref->[0][1]呢?
这样的话,如何能区分$array_ref->[0]是数组还是引用呢?
呵呵,原因就在于perl中的数组中是不包含数组的,因此如果你看到有两个[],那么第一个方括号一定是一个引用。
总结如下: 第一个方括号之前可以是数组也可以是引用
$array[0] array是数组
$array->[0] array是数组的引用
第一个方括号之后的任意一个元素都是一个引用(当然最后一个方括号所代表的元素未必是)
例如:$array->[0][3][1][5]中
$array->[0],$array->[0][3],$array->[0][3][1]都是引用。
@array1 = qw /a b c/;
@array2 = qw /d e f/;
@array = {/@array1, /@array2};
$array_ref = /@array;
假如要访问array1中的第2个元素,可以有如下几种写法:
$array[0][1] 写法一
${$array_ref}[0][1] 写法二
$$array_ref[0][1] 写法三
$array_ref->[0]->[1] 写法四
$array_ref->[0][1] 写法五
写法二或许是初学者不熟悉perl时使用的方法,先写出写法一,然后用数组引用{$array_ref}代替数组名array即可得到写法二。
这里应用了perl中数组名和数组引用相互替换的规则。
写法三是写法二的改进,也是另一个规则的应用,即括号中如果是标量,则可以省略括号。
写法四也是对写法二的改进,可以使用->来取代{},以此方便使用。
写法五是对写法四的改进,即省略->,使得表达形式更加简介紧凑。
这里有人可能会问为什么写法五中的第一个->不能省略?
其实很简单,如果省略了第一个->,那么就变成了$array_ref[0][1],此时perl就会把array_ref误认为是数组。
可以说第一个->是perl区分数组和数组引用的辨别标准:
$array[0][1] 无->,因此array是数组
$array->[0][1] 有->,因此array是数组的引用
那么可能又会有人质疑, $array_ref->[0] == /@array1,也是引用啊,为什么可以省略第二个->,而把
$array_ref->[0]->[1] 写成$array_ref->[0][1]呢?
这样的话,如何能区分$array_ref->[0]是数组还是引用呢?
呵呵,原因就在于perl中的数组中是不包含数组的,因此如果你看到有两个[],那么第一个方括号一定是一个引用。
总结如下: 第一个方括号之前可以是数组也可以是引用
$array[0] array是数组
$array->[0] array是数组的引用
第一个方括号之后的任意一个元素都是一个引用(当然最后一个方括号所代表的元素未必是)
例如:$array->[0][3][1][5]中
$array->[0],$array->[0][3],$array->[0][3][1]都是引用。
相关文章推荐
- Perl 引用(即指针) 学习笔记
- Perl 学习笔记(12) -- 引用
- perl学习笔记(2)
- Velocity学习笔记7——引用的不同形式
- perl学习笔记(一)
- c++学习笔记--引用
- C++primer学习笔记--右值引用
- perl学习笔记(5)
- Java中的四种引用:强引用、软引用、弱引用、虚引用学习笔记
- JavaScript学习笔记——引用类型:Array类型
- perl学习笔记五----模式匹配
- [PERL脚本] 学习笔记
- cocos2d-x 菜鸟学习笔记九(引用plist快速生成动画精灵)
- JavaScript学习笔记(十)——学习心得与经验小结
- leaning perl学习笔记
- Perl学习笔记 Learning Perl Chapter I
- 【linux学习笔记】查找命令小结
- perl学习笔记16--Web自动化和连网
- Effective C++学习笔记:必须返回一个对象时不要试图返回一个引用
- 《第一行代码Java》引用传递部分学习笔记与代码