stable - 实验性功能变得容易,一旦我们知道它们是稳定的
版本 0.031
use stable 'lexical_subs', 'bitwise';
my sub is_odd($value) { $value & 1 }
The experimental pragma 使得在关闭相关警告的同时轻松打开实验性功能。如果你还不了解它,你应该阅读一下。
在代码中看到 use experimental
可能很吓人。事实上,它可能确实应该让人害怕!使用实验性功能的代码将来可能会出现问题,如果 Perl 开发团队决定需要修改实验。当实验变得稳定时,因为开发人员决定它们是成功的,与它们相关的警告就会消失。当这种情况发生时,它们通常可以通过 use feature
打开。
这很棒,如果你使用的是 Perl 版本,你想要的功能已经稳定了。但是,如果你使用的是旧版本的 Perl,你可能想要使用一个仍然会发出警告的实验性功能,即使使用它没有风险,因为后续版本的 Perl 具有该功能,并且现在已经稳定了。
以下是一个例子:postderef
功能在 Perl 5.20.0 中添加。在 Perl 5.24.0 中,它被标记为稳定。使用它将不再触发警告。该功能的行为在 5.20.0 和 5.24.0 之间没有改变。这意味着在 5.20 或 5.22 上使用该功能是完全安全的,即使它会发出警告。
在这种情况下,你可以非常合理地添加 use experimental 'postderef'
,但随意阅读的人可能仍然会担心看到它。stable
pragma 存在于仅在已知其在运行的 Perl 中的行为是其稳定行为时才打开实验性功能。
如果你尝试使用在运行的 Perl 版本上不稳定或不可用的实验性功能,将抛出异常。你还要注意你已经要求了所需的 stable
版本!
如果原因不立即显而易见,这里有一些解释
stable
从 Perl v5.38 开始包含在 Perl 中。
假设 v5.38 添加了一个名为“florps”的功能。它将在 v5.42 中停止实验阶段。
与 Perl v5.38 一起提供的 stable
版本无法知道 florps 实验是否会成功,因此您无法在与 v5.38 一起提供的 stable 版本上使用 use stable 'florps'
,因为它无法预知未来!
您需要编写 use stable 1.234 'florps'
来表明您需要 stable 的 1.234 版本,这是 florps 为 stable 所知晓的版本。
当然,这有点奇怪,但它很值得!此 pragma 的文档会告诉您需要使用哪个版本的 stable
才能使用各种功能。请参见下文。
目前只有几个“stable”功能
bitwise
- 从 Perl 5.22 开始稳定,可通过 stable 0.031 获得
isa
- 从 Perl 5.32 开始稳定,可通过 stable 0.031 获得
lexical_subs
- 从 Perl 5.22 开始稳定,可通过 stable 0.031 获得
词法子程序实际上是在 5.18 中添加的,并且其设计没有改变,但重大错误使其在 5.22 之前不安全使用。
postderef
- 从 Perl 5.20 开始稳定,可通过 stable 0.031 获得
perlexperiment 包含有关实验功能的更多信息。
Leon Timmermans <[email protected]>
此软件版权所有 (c) 2013 年 Leon Timmermans。
这是免费软件;您可以根据与 Perl 5 编程语言系统本身相同的条款重新分发它和/或修改它。