我现在正在使用Perl 5.24,并且smartmatch是一个出色的多功能操作员,例如,
%foobar ~~ @foo;
Run Code Online (Sandbox Code Playgroud)
以及其中的所有复杂性。
我了解从5.27开始,其功能将简化为涉及以下内容的智能手表:
$foo = qr/foo/;
Run Code Online (Sandbox Code Playgroud)
好吧,我将不得不重写我的数据管道以使其合规。
我的问题是,如果确认有什么区别,
'foo' ~~ $foo;
Run Code Online (Sandbox Code Playgroud)
和,
'foo' =~ /$foo/;
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,除了名称之外,smartmatch已全部删除。我是对的,如果不是,我会缺少什么?
历史
它具有不寻常的历史,必须强调它被归类为实验性。我正在绘制我所知道的图表。我想你们中的许多人会知道更多,任何输入都会有所帮助,因为这是(对学生)语言进化的一个例子:
小智 6
智能匹配仍处于实验阶段。
如果我们有时间机器,那么从事perl开发的大多数人都会回到过去,并从perl5中删除智能匹配。智能匹配所做的唯一一件事就是清楚地表明,如果要从perl6中获取某些东西并将其连接到perl5中,则要比这复杂得多say。
没有人知道perl5中智能匹配的未来。对于应该是什么没有达成共识。如果不是因为可怕的“向后兼容性”,聪明的比赛将在多年前就死定了。
为自己节省很多痛苦,不要使用智能匹配。