我想,结果应该是1, 2, 3
.
> my ($a, $b, $c)
> (($a, $b), $c) = ((1, 2), 3)
(((1 2) 3) (Any))
> $a, $b, $c
((1 2) 3 (Any))
这里有什么问题?
最佳答案
没有错(也就是说,P6 中的普通赋值被设计为按照它所做的那样做)但猜测你希望使两侧的结构相同会导致 $a
获取 1
, $b
获取 2
和 $c
获取 3
.
为此,您需要“绑定(bind)分配”(也就是“绑定(bind)”),而不是普通的分配:
my ($a, $b, $c);
:(($a, $b), $c) := ((1, 2), 3);
注意左侧列表之前的冒号,使其成为签名文字,以及
=
之前的冒号,使其成为绑定(bind)操作。
关于raku - Perl 6 中嵌套列表的赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50221466/