问题描述
运行以下简单代码,检查无sigil变量的行为,会产生奇怪的错误:
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)
那是为什么?
解决方法
以v
开头,后跟数字(依次是点和其他数字)的文学被视为versions。这意味着您不能使用以v开头,后跟数字作为无符号标识符的任何内容。
say (v1.2.3).parts; # OUTPUT: «(1 2 3)»
不过,这可能没有充分记载。