Chinaunix首页 | 论坛 | 博客
  • 博客访问: 48793
  • 博文数量: 43
  • 博客积分: 1161
  • 博客等级: 少尉
  • 技术积分: 425
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-24 11:14
文章分类
文章存档

2011年(40)

2010年(3)

分类: Python/Ruby

2011-05-14 18:08:18

  1. #!perl
  2. use strict;
  3. use 5.010;
  4. my $ref_to_anym;
  5. {
  6.   my @array=qw(a b c d);
  7.   $ref_to_anym=\@array;
  8. }
程序在匿名块中定义了一个数组@array,并在块中将@array的引用存入全局变量$ref_to_anym,当程序离开匿名块后,数组名array失效,$ref_to_anym指向内存中的一个匿名列表.
这个例子中,数组名array只用了一次,之后就再也没用过.编写程序的时候还要先想个合适的名字,并要防止命名冲突.能够让事情更加简单.
可以使用匿名数组构造器来简化操作(We can create such a value directly using the anonymous array constructor,which is yet another use for square brackets).
  1. #!perl
  2. use strict;
  3. use 5.010;
  4. my $ref_to_anym=[qw(a b c d)];
这样,$ref_to_anym就直接指向了一个匿名列表.
方括号([])用其包含的所有值来构建一个匿名数组,并且返回这个匿名数组的引用(The square brackets take the value within(evaluated in a list context);establish a new,anonymous array initialized to those values;and(here's the important part)return a reference to that array).
在直接构造匿名数组引用时,qw也是可以省掉的:
  1. #!perl
  2. use strict;
  3. use 5.010;
  4. my $ref=['a','b','c','d'];
  5. say "@$ref";
Perl的很多语法都是为了减少按键次数,所以是否使用qw可以按需处理,在这个程序中,不使用qw反而输入更加麻烦.

匿名数组引用也支持嵌套:
  1. #!perl
  2. use strict;
  3. use 5.010;
  4. my $ref=['Hello',[qw(a b c d)]];
  5. say "$ref->[0]:@{$ref->[1]}";
以这样的方式来定义嵌套的匿名数组引用,可以完全省略掉数组的临时名字.


可以将匿名数组引用直接作为子程序的参数列表
  1. #!perl
  2. use strict;
  3. use 5.010;
  4. sub disp {
  5.   for(@{$_[0]}) {
  6.     say "|$_|";
  7.   }
  8. }
  9. &disp([qw(a b c d e f)]);

可以直接返回一个匿名数组引用
  1. #!perl
  2. use strict;
  3. use 5.010;
  4. sub cons_anym {
  5.   return[qw(aaa bb cc)];
  6. }
  7. my $ref=&cons_anym();
  8. say "@$ref";
阅读(624) | 评论(0) | 转发(0) |
0

上一篇:引用计数

下一篇:匿名哈希

给主人留下些什么吧!~~