stable - 一旦我們知道它們是穩定的,實驗性功能就變得容易了
版本 0.031
use stable 'lexical_subs', 'bitwise';
my sub is_odd($value) { $value & 1 }
當關閉相關警告時,experimental 實用指令可以輕鬆開啟實驗性功能。如果您還不知道它的作用,您應該閱讀相關說明。
在程式碼中看到 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
實用指令存在於僅在已知其在執行 Perl 中的行為為其穩定行為時才開啟實驗性功能。
如果您嘗試使用在 Perl 執行版本中不穩定或不可用的實驗性功能,將會擲回例外。您還應該注意,您已要求您需要的 stable
版本!
如果沒有馬上明白原因,以下是部分說明
stable
隨 perl 附帶,從 perl v5.38 開始。
想像 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,可透過 stable 0.031 取得
isa
- perl 5.32 起為 stable,可透過 stable 0.031 取得
lexical_subs
- perl 5.22 起為 stable,可透過 stable 0.031 取得
字彙子常式實際上是在 5.18 中加入,其設計並未變更,但重大錯誤使其在 5.22 之前不安全。
postderef
- perl 5.20 起為 stable,可透過 stable 0.031 取得
perlexperiment 包含更多有關實驗功能的資訊。
Leon Timmermans <leont@cpan.org>
此軟體的著作權為 Leon Timmermans 所有 (c) 2013。
這是自由軟體;您可以在與 Perl 5 程式語言系統相同的條款下重新散布或修改它。