冒号可以用作Perl 6中变量名的一部分,以及尖括号.这些显然被称为扩展标识符,用于定义诸如infix:<+>.
my $foo:bar = 3;
my $foo:bar<2> = 2;
my $foo:bar<baz> = 'quux';
say $foo:bar; # 3
say $foo:bar<2>; # 2 (and so on)
Run Code Online (Sandbox Code Playgroud)
这将在当前范围中创建具有相同名称的标识符
say MY::.keys;
Run Code Online (Sandbox Code Playgroud)
打印 ($=pod $_ $/ $buz !UNIT_MARKER $=finish EXPORT $foo:bar<2> $foo:bar<baz> $! ::?PACKAGE GLOBALish $bur::quux $¢ $foo:bar $?PACKAGE
但这就是事情.
say $foo:bar.kv; # prints key-value pairs.
Run Code Online (Sandbox Code Playgroud)
打印(0 3).所以这些冒号变量正在创建一个键值对.但是,其他两个"键"(2和baz)不包括在该组键值对中.如果我们真的尝试say $foo:bar{'0'}或者say $foo:bar<0>;我们将获得不同的错误,那么似乎没有一种实际的方法将其用作真正的密钥.所以我想这里至少有几个问题:
infix变量的方法?所以这些克隆变量正在创建一个键值对.
不,.kv(或kv)正在生成键值对:
my $foo = 3;
say kv $foo # (0 3)
Run Code Online (Sandbox Code Playgroud)
当您调用.kv列表时,您将获得一个索引列表,每个索引后跟相关值.
当您在其上调用listy方法时,每个奇异值都将被视为包含一个值的列表.
基本上这些是相同的:
$foo:bar.kv
$foo:bar.list.kv
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
122 次 |
| 最近记录: |