[编辑:关闭支持https://stackoverflow.com/questions/69231506/what-are-the-rules-for-re-binding,这是我在更清楚地了解我在这个问题中要问的内容后制定的。 ]
我的理解来自禁止重新绑定无符号变量是否有目的或好处?是一个没有印记就宣布的符号永远不会被反弹。引用该答案:
是的,[当前行为] 肯定是设计使然,并且 - 就像 [Raku] 设计中的大多数事情一样 - 这样做的原因不止一个……决定使无符号符号形成“静态单一分配”语法…… . 造成这种情况的原因有很多,包括……通过让读者知道符号永远不会反弹到新值的形式来增强程序的可读性
(强调补充。)
鉴于此,我对下面的代码感到非常惊讶:
my Int \b = 8;
say "{b*b}"; # OUTPUT: «64»
b := 4;
say "{b*b}"; # OUTPUT: «16»
也就是说,当声明b
没有符号但有Int
类型约束时,它可以被反弹——不像它缺少类型约束时。这种行为是一个错误,还是正确的?
如果是,它如何符合上面链接的答案中提到的设计考虑?
(另请参阅GitHub 上的这个 Raku/doc 问题线程,以讨论这种行为以及它是否是故意的。)