Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables perl 6变量同名不同符号不一致行为_Variables_Raku_Sigils - Fatal编程技术网

Variables perl 6变量同名不同符号不一致行为

Variables perl 6变量同名不同符号不一致行为,variables,raku,sigils,Variables,Raku,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

当使用相同字母名称但不同符号的变量时,似乎存在一些不一致的行为:

> 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,2,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
未更改。它只是没有得到你认为它已经被分配的分配。查看上的文档,您将看到
=
(赋值)的优先级比逗号
更高

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

my$b=1,2,3
实际上与
(my$b=1),2,3
,因为
=
的优先级比
的优先级更高,这意味着除了第一个值之外,实际上所有值都被忽略

> (my $b = 1),2,3
(1 2 3)
> $b
1
如果要将列表分配给
$b
,请在列表周围加括号:

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

非常感谢你,克里斯托弗!!!我现在拿到了,这张纸条也有用!谢谢有人可能会说,
my$b=1,2,3
应该警告不要将值
2
3
掉到地板上。@ElizabethMattijsen,这个警告类似于
在接收器上下文中无用地使用常量。您的意思是给Scalar分配一个列表吗?