11

整个“开关”功能是否已成为实验性的?在 Perl 的未来版本不会破坏我的代码的情况下,我可以依赖其中的某些部分吗?一般来说,将稳定功能更改为实验性功能的策略是什么?

背景

use feature "switch"自 5.10 以来一直在 Perl 中。从 5.10 到 5.14,perlsyn似乎表明这是一个稳定的、受支持的功能。

然而,从 5.16perlsyn 开始,它开始称其为实验性开关功能”,并且对于什么被认为是实验性的变得更加混乱。

部分文档似乎表明该功能的所有内容都是实验性的:

在“切换”功能下,Perl 获得了实验性关键字givenwhendefaultcontinuebreak

甚至有一整节关于given 和 when 的实验细节

但是,perlsyn 还说“这foreach是设置局部化器的非实验性方法”,并给出了一个似乎暗示 foreach/when 不是实验性的示例。

据我所知,“实验性”语言来自提交 c2f1e22,它引用了RT #90926 ,即使与RT# 90906配对,它仍然没有提供太多上下文。

4

1 回答 1

5

整个“开关”功能是否已成为实验性的?

不,一直都是。

Upd:哦,哇,也许我错了。我在 5.10.0 或 .1 中找不到提及。也许不是?或者他们可能忘记注意了?无论哪种方式,如果是这样,他们似乎比我想象的更糟!但根据我从那以后看到的情况,我认为我们吸取了教训。(例如,我仍然认为这values $ref是一个坏主意,但至少从第一天起它就被标记为实验性的。)

在 Perl 的未来版本不会破坏我的代码的情况下,我可以依赖其中的某些部分吗?

从技术上讲,不,尽管开发人员在向后兼容性方面总是很小心。

一般来说,将稳定功能更改为实验性功能的策略是什么?

我不认为这种情况会发生。将改为使用弃用过程。


到目前为止的变化:

  • given在 5.18 中从创建词汇$_到本地化$_(如 foreach 循环)(或者它是否已经在 5.16 中发生?)。

  • 5.10.1 在智能匹配方面发生了一些重大变化*。不要使用(智能匹配)5.10.0。

未来可能的变化:

  • 智能匹配*的行为仍然是一个热门话题。

* — 没错,这是一个与 given-when 不同的特征,但在大多数人的心目中,它是相同的或密切相关的。

于 2012-12-14T19:53:02.177 回答