相关疑难解决方法(0)

在运行时在 Stash 中创建的符号在 Raku 的 PseudoStash 中不可用

这个问题始于我试图弄清楚为什么在运行时创建的符号对EVAL.

外-EVAL.raku

#!/usr/bin/env raku

use MONKEY-SEE-NO-EVAL;

package Foobar {
  our $foo = 'foo';

  our sub eval {
    say OUTER::;
    EVAL "say $bar";
  }
}

Foobar::<$bar> = 'bar';
say $Foobar::bar;

Foobar::eval;

.say for Foobar::;
Run Code Online (Sandbox Code Playgroud)
$ ./outer-EVAL.raku 
===SORRY!=== Error while compiling /development/raku/VTS-Template.raku/scratchpad/./outer-EVAL.raku
Variable '$bar' is not declared
at /development/raku/VTS-Template.raku/scratchpad/./outer-EVAL.raku:10
------>     EVAL "say ?$bar";
Run Code Online (Sandbox Code Playgroud)

认为这与以这种方式创建的符号在PseudoStashs 中不可用有关。但我可能是错的。

外乐

#!/usr/bin/env raku

package Foobar {
  our $foo = 'foo';

  our sub outer {
    say OUTER::;
  }
}

Foobar::<$bar> = 'bar'; …
Run Code Online (Sandbox Code Playgroud)

scope eval scoping raku

6
推荐指数
1
解决办法
88
查看次数

标签 统计

eval ×1

raku ×1

scope ×1

scoping ×1