【发布时间】:2020-01-24 08:04:22
【问题描述】:
在以下简单的 for 循环中,我们通过增加一个无类型变量 ($n) 来创建一个数组 (@a):
my @a = do for 1..3 {
state $n;
$n.^name, $n++;
}
say @a;
结果是“有点”预期的:
[(Any 0) (Int 1) (Int 2)]
我说“种类”是因为我预计 $n 的第一个值是“未定义”值 (Any)。
就像,在产生第一个值 (Any) 之后,当我们增加 $n (在 $n 的第一个增量之后,我们有一个转换为 Int 之后)在赋值中也有一些时间扭曲事件,并且我们也得到了第一个改变的值。所以我们最终将第一个值设为 0(零)。
有人可以解释这种行为的确切机制吗?
【问题讨论】:
标签: variables initialization raku