Eva*_*oll 63 perl perl5 smartmatch
我刚刚安装了Perl 5.18,我收到很多这样的警告,
given is experimental at .\[...].pl line [...].
when is experimental at .\[...].pl line [...].
Smartmatch is experimental at C:/strawberry/perl/site/lib/[...] line [...].
Run Code Online (Sandbox Code Playgroud)
看看这些警告 - 我从未在任何地方听到过这些警告 - 我只能在两个地方找到这个警告,
Perl Delta仍然能够最大限度地提及这些功能正在发生的事情,它被埋在吊舱中的一半,
在v5.10.0中添加并在v5.10.1中进行了重大修订的智能匹配一直是一个常见的投诉点.尽管有许多方法可用,但它也证明了Perl的用户和实现者都存在问题和困惑.关于如何最好地解决问题,已经提出了许多建议.很明显,smartmatch几乎肯定会在将来改变或消失.不建议依赖其当前行为.现在,当解析器看到〜,给定或何时发出警告.
我对过去10年中Perl最显着的变化如何被拉动感到困惑.我已经开始使用given
,when
以及smartmatch
所有地方.还有关于这些未来的更多信息吗?怎么有人发现它们"令人困惑?" 这些功能如何变化?是否有计划使用模块实现这些功能?
ike*_*ami 37
智能匹配的设计存在问题.任何给定的TYPE ~~ TYPE
应该做的决定通常是不明显的,不一致的和/或有争议的.这个想法不是要删除智能匹配; 这是解决它.
具体而言,~~
将大大简化,正如您在5.18 pumpking 的提案中所看到的那样.关于两件事如何匹配的决定将通过辅助工具完成,例如Smart :: Match中已存在的辅助工具.
... ~~ any(...)
Run Code Online (Sandbox Code Playgroud)
更具可读性,更灵活(完全可扩展),并解决了许多问题(例如"何时应将X视为数字,何时应将其视为字符串?").
Joe*_*ger 21
通过阅读rjbs对smartmatch的建议更改,可能会获得一些见解.毕竟,他是南京(Perl发布经理),所以他的评论和他对未来的看法比大多数人更有意义.关于这个问题还有很多社区评论,比如这里."实验"状态是有效的,因为事情可能会在未来发生变化,即使我们不知道这些变化会是什么,也有责任告知用户这一事实.
嗯,这就是在将这组功能降级为实验的补丁说明中所说的:
给定/ when/~~的行为可能会在perl 5.20.0中发生变化:智能匹配将被删除或删除.鉴于此,应警告这些功能的用户.在使用这些功能时,应为这些功能发出类别"experimental :: smartmatch"警告.
所以,你可以用这样的东西(源)确实关闭这些警告:
no if $] >= 5.018, warnings => "experimental::smartmatch";
Run Code Online (Sandbox Code Playgroud)
......它只是让你的眼睛远离问题.
归档时间: |
|
查看次数: |
11827 次 |
最近记录: |