@$array

@$array 的意思

我仍然在学 Perl 6, 请原谅我的无知。我有点不明白下面的结构:

A   Level   Examples
N   Terms   42 3.14 "eek" qq["foo"] $x :!verbose @$array

请问 :!@$ 的意思是什么?

@$foo@($foo) 的简写, 其中 $foo 是 item 变量而 @(...) 语法就是在它的参数身上调用 .list 方法。这两种方式有时候都叫做列表/数组上下文。

@$(...) 的使用场景之一就是迭代一个存储在 item 容器中的数组。item 容器被认为是单个条目, 而在 item 容器上调用 .list 方法会返回一个普通的数组, 其周围的 item 容器会被移除(例如,强制值在列表上下文中解释):

my $foo = [1, 2, 3];
say $foo.perl;       # $[1, 2, 3]
say $foo.list.perl;  # [1, 2, 3]
say @$foo.perl;      # [1, 2, 3]

for $foo { ... }       # One iteration
for $foo.list { ... }  # Three iterations
for @$foo { ... }      # Three iterations (identical to the previous line)

:!foo:foo(False) 的简写,举个例子,具名参数拥有 False 值:

sub do-something (:$verbose = True) { say $verbose; }

do-something;            # True
do-something :verbose;   # True
do-something :!verbose;  # False

当写在 item 位置上而非作为参数列表中的参数时,它构建了一个 Pair 对象:

say (:!verbose);        # verbose => False

使用 :verbose 参数是一个使用冒号对儿Bool 参数设置为 True 的好方法。:!verbose 是它的反面, 即把 verbose 设置为 False, 等价于 :verbose(False)

@$ 是一种使用 @ 前缀从带有 $ 符号的标量变量中移除 container 的方法:

my $x = (1, 2, 3);
.say for $x;

输出:

(1 2 3)

而:

my $x = (1, 2, 3);
.say for @$x;

输出:

1
2
3
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,833评论 19 139
  • 引用类型与传统面向对象程序设计中的类相似,但实现不同。 对象在 JavaScript 中被称为引用类型的值,而且有...
    BertFu阅读 2,707评论 0 0
  • 此文章用于归纳Array的所有方法 在JavaScript中,除了Object,用得最多的可能就是数组Array了...
    moonburn阅读 2,299评论 1 3
  • EAMAScript数组的每一项可以保存任何类型的数据 1.创建数组 使用Array构造函数 数组字面量方法 2....
    章丸丸阅读 3,025评论 0 0
  • 蔷薇女士阅读 1,333评论 0 0

友情链接更多精彩内容