为什么 temp 在 Perl 6 核心设置中不起作用?
Why doesn't temp work in Perl 6 core settings?
我正在查看并在 indir
实施中看到了这条评论:
sub indir(Str() $path, $what, :$test = <r w>) {
my $newCWD := $*CWD.chdir($path,:$test);
$newCWD // $newCWD.throw;
{
my $*CWD = $newCWD; # temp doesn't work in core settings :-(
$what();
}
}
我认为 my
的这种用法很奇怪,这导致 doc issue #1082 对 my
是否真的是词法的感到厌烦。我本以为 temp
更适合动态变量的用户级临时更改。
但是现在,我看到这条评论,但我不太清楚它是什么意思。 temp
碎这么深?这里不可用吗?还是评论有误?
如果评论是正确的,这种处理动态变量的方式是否已泄露到日常程序员级别,因为这是一些人必须做的事情(他们已经习惯了?)
而且,这个级别到底有多低?似乎所有的 Perl 6 都应该在这里可用。
也许源代码中的注释如果是:
# temp $*CWD doesn't work in core settings (which we're in)
# my $*CWD = ... is a decent workaround in this case :)
It seems like all of Perl 6 should be available here.
完整的 Perl 6 必须等到 Perl 6 CORE setting. This corresponds to the Rakudo Perl 6 compiler's "core" src tree. This includes the code 编译完成后才能使用“#temp 在核心设置中不起作用:-(”评论。
强调@raiph 的观点:一般来说,期望在 rakudo 中实现的任何特定 Perl 6 功能在 CORE 中的任何给定点工作是不合理的,因为那是我们如何使功能可用。
从事核心工作的开发人员必须意识到这一点,并考虑到这一点,例如,在订购 CORE 的构建方式时,以及哪些功能在哪个点可用(以及哪些功能更进一步)较低级别的性能,因此您在 CORE 中看到的 Perl 6 可能由于多种不同的原因而不是惯用的。)
我正在查看并在 indir
实施中看到了这条评论:
sub indir(Str() $path, $what, :$test = <r w>) {
my $newCWD := $*CWD.chdir($path,:$test);
$newCWD // $newCWD.throw;
{
my $*CWD = $newCWD; # temp doesn't work in core settings :-(
$what();
}
}
我认为 my
的这种用法很奇怪,这导致 doc issue #1082 对 my
是否真的是词法的感到厌烦。我本以为 temp
更适合动态变量的用户级临时更改。
但是现在,我看到这条评论,但我不太清楚它是什么意思。 temp
碎这么深?这里不可用吗?还是评论有误?
如果评论是正确的,这种处理动态变量的方式是否已泄露到日常程序员级别,因为这是一些人必须做的事情(他们已经习惯了?)
而且,这个级别到底有多低?似乎所有的 Perl 6 都应该在这里可用。
也许源代码中的注释如果是:
# temp $*CWD doesn't work in core settings (which we're in)
# my $*CWD = ... is a decent workaround in this case :)
It seems like all of Perl 6 should be available here.
完整的 Perl 6 必须等到 Perl 6 CORE setting. This corresponds to the Rakudo Perl 6 compiler's "core" src tree. This includes the code 编译完成后才能使用“#temp 在核心设置中不起作用:-(”评论。
强调@raiph 的观点:一般来说,期望在 rakudo 中实现的任何特定 Perl 6 功能在 CORE 中的任何给定点工作是不合理的,因为那是我们如何使功能可用。
从事核心工作的开发人员必须意识到这一点,并考虑到这一点,例如,在订购 CORE 的构建方式时,以及哪些功能在哪个点可用(以及哪些功能更进一步)较低级别的性能,因此您在 CORE 中看到的 Perl 6 可能由于多种不同的原因而不是惯用的。)