【发布时间】:2021-08-24 07:38:39
【问题描述】:
类名在EVALFILE 之后的范围内可用,而文档可能另有说明。
EVALFILEstates 的文档:
啜饮指定的文件并评估它。在 Blob 解码、作用域、$lang 参数和 $check 参数方面的行为与 EVAL 相同。当 $check 不为 True 时,计算文件中最终语句产生的值。
EVALstates 的文档:
由于词法范围内的符号集在编译后是不可变的,因此 EVAL 永远不能将符号引入周围的范围。
我的输入文件是:
class SomeClass {
method a () { "In SomeClass method a"; };
}
sub some-routine () {
"Some routine";
}
> my $f = EVALFILE("/tmp/eval-bug.raku");
&some-routine
> $f()
Some routine
> some-routine()
===SORRY!=== Error while compiling:
Undeclared routine:
some-routine used at line 1
以上三个执行符合文档,但以下不符合:
> SomeClass.a()
In SomeClass method a
symbol 是不是只表示例程名而不是类名?或者这是一个错误?
【问题讨论】: