繁体   English   中英

`@$array` 和其他结构的含义

[英]Meaning of `@$array` and other constructs

我还在学习 Perl 6。请原谅我的无知。 我正在阅读Operators 页面,我在表格的开头发现了一些不熟悉的结构:

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

我重新阅读了类 Array 和类 Scalar,但在这些部分中找不到@$xyz构造。 怎么办:! @$是什么意思? 有没有一个方便的地方可以收集和解释所有这些象征性的结构?

非常感谢 !!

@$foo@($foo)缩写,其中$foo是一个项目变量, @(...)语法简单地调用.list方法的参数。 方法和句法形式有时被称为“列表/数组上下文化器”

它的一种用途是当您想要迭代存储在项目容器中的 Array 时。 项目容器被内置程序(例如for循环)视为单个项目,而在其上调用.list会返回没有周围项目容器的普通数组(即“强制在列表上下文中解释值”):

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

当写在术语位置但不作为参数列表的参数时,它构造一个Pair对象:

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

使用:verbose参数将是使用冒号对Bool参数设置为True的好方法。 它相当于:verbose(True) :!verbose只是它的否定,将其设置为False ,相当于:verbose(False)

@$是一种使用@前缀从带有 sigil $的标量变量中删除容器的方法

考虑:

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

输出:

(1 2 3)

对比

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

输出:

1
2
3

大多数运算符都可以直接搜索。 特别是这两种情况不是单独的运算符,而是组合使用符号的情况。 方便地收集这些有点困难,但文档每天都在改进。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM