CW *_* II 21 perl terminology smartmatch
Run Code Online (Sandbox Code Playgroud)@array ~~ $scalar is true when $scalar is in @array
到draegtun回复:
从5.10.1+开始,~~的顺序很重要.因此它需要是$ scalar ~~ @ array
关于~~源(s)的链接的小型入门如何包括以下具体问题:什么是~~?什么~~叫?为什么订单在一个版本中很重要但在之前的版本中却不重要?
请注意,一个好的摘要可能无法获得所有细节,可能很难写.引入或引用对于为不熟悉的人节省时间非常有用,~~同时扩展此Perlism的曝光度.
搜索字符串:non-word-tilde-tilde non-word-at-sign.
hob*_*bbs 27
具体回答"为什么订单在一个版本中而不是在前一个版本中重要":智能匹配运算符在5.10.0中设计得很糟糕,难以可靠地使用,并使给定/何时构造不那么有用因此,语义随着5.10.1而改变,所有未来版本将假装5.10.0版本从未存在过.
在智能匹配的5.10.1+版本中,左操作数和右操作数~~始终被清楚地处理.就像=~正则表达式匹配运算符一样,左侧是匹配的"主题",右侧是要匹配的"模式" - 无论是普通标量,正则表达式,数组还是哈希引用,代码引用,或者其他什么.在perlsyn中详细说明了具体细节.
您根本不必担心5.10.0版本,除非您已经编写了依赖于5.10.0语义的代码(在这种情况下,您应该将其重写为要求5.10.1,否则它将在所有版本中断未来版本的perl).
Eva*_*oll 19
智能匹配,请参阅 perldoc perlsyn
根据评论中的请求,我将给出更多信息:Smart Match是任意数据类型的运算符,它试图理解相等测试只知道参数的类型,许多测试需要复杂的操作,如迭代和正则表达式应用程序
(从Learn Perl中窃取):二进制"~~"在其参数之间进行智能匹配.
http://perldoc.perl.org/perlsyn.html#Smart-matching-in-detail
它有什么作用?"这取决于"主要取决于所提供参数的类型.上面链接的页面有关于变体的详细信息.