变量 – 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实际上是相同的 > (my $b = 1),3 (1 2 3) > $b 1 如果要为$b分配列表,请在列表周围加上括号: > my $b = (1,3) (1 2 3) > $b (1 2 3) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |