为什么我不能命名无符号变量 v+digit?

jak*_*kar 11 debugging rakudo raku

运行以下简单代码,检查无符号变量的行为,产生一个奇怪的错误:

use v6.d;  # Rakudo Star 2020.05.01 (Windows)

sub test ($p) {
    say $p;
}

my \v1 = 1;

say v1;   # v1 (ERROR)
test(v1); # v1 (ERROR)

my \v = 1;

say v;   # 1 (Correct)
test(v); # 1 (Correct)

my \vv1 = 1;

say vv1;   # 1 (Correct)
test(vv1); # 1 (Correct)

my \s1 = 1;

say s1;   # 1 (Correct)
test(s1); # 1 (Correct)
Run Code Online (Sandbox Code Playgroud)

这是为什么?

jjm*_*elo 16

v以数字开头并后跟数字(以及点和其他数字)的文字被视为版本。这意味着您不能使用以 v 开头并后跟数字的任何内容作为无符号标识符。

say (v1.2.3).parts; # OUTPUT: «(1 2 3)?» 
Run Code Online (Sandbox Code Playgroud)

不过,这可能记录不足......

  • 我认为这是一个错误。本地定义应该*总是*覆盖全局定义。将 `say i` 与 `for ^5 -> \i { say i }` 进行比较 (4认同)