11

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

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)

这是为什么?

4

1 回答 1

16

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

say (v1.2.3).parts; # OUTPUT: «(1 2 3)␤» 

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

于 2020-09-20T08:55:41.567 回答