加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 06:23:44 所属栏目:大数据 来源:网络整理
导读:当使用相同字母名称但使用不同符号的变量时,似乎存在一些不一致的行为: my $a="foo";foo my @a=1,2[1 2] say $afoo # 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
当使用相同字母名称但使用不同符号的变量时,似乎存在一些不一致的行为:

> 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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读