变量 – perl 6变量同名不同的sigils不一致行为

前端之家收集整理的这篇文章主要介绍了变量 – perl 6变量同名不同的sigils不一致行为前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当使用相同字母名称但使用不同符号的变量时,似乎存在一些不一致的行为:

> my $a="foo";
foo
> my @a=1,2
[1 2]
> say $a
foo               # this is what I have expected
> my $b = 1,2,3
(1 2 3)
> my @b = (0,$b.Slip)
[0 1]             # I expect to get [0 1 2 3]; (0,|$b) not work either
> say $b
1                 # I expect $b to be unchanged,(1,3),but it is now 1;
> say @a
[1 2]
> say @b
[0 1]
>

我不确定为什么@a不影响$a,而@b影响$b.有人可以澄清一下吗?

谢谢 !!!

lisprog

解决方法

在Rakudo Perl 6中,$b和@b之间实际上没有任何关系.

$b没有改变.它根本没有被分配你认为它被分配的东西.查看Operator Precedence上的文档,您会看到=(赋值)的优先级比逗号更严格.

此外,您正在使用REPL,它会自动打印出每个语句的返回值.该返回值可能与分配给变量的值相同,也可能不同.

我的$b = 1,3实际上是相同的
(我的$b = 1),3因为=比优先级更严格,这意味着除了第一个值之外的所有值都被忽略了

> (my $b = 1),3
(1 2 3)
> $b
1

如果要为$b分配列表,请在列表周围加上括号:

> my $b = (1,3)
(1 2 3)
> $b
(1 2 3)

猜你在找的Perl相关文章