加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 42,42.0,“42.0”,“42”之间会有差异吗?

发布时间:2020-12-15 21:30:43 所属栏目:大数据 来源:网络整理
导读:在使用“Smart Match(~~)”测试我的Perl代码的过程中,我遇到了这个问题. 42,42.0,“42.0”,“42” $var1 = "42";$var2 = "42.0";$a = $var1 ~~ $var2; 我得到$a为0;这意味着$var1和$var2不相等. 请解释. 解决方法 智能搭档操作符将“通常做你想要的”.请阅读
在使用“Smart Match(~~)”测试我的Perl代码的过程中,我遇到了这个问题. 42,42.0,“42.0”,“42”
$var1 = "42";
$var2 = "42.0";
$a = $var1 ~~ $var2;

我得到$a为0;这意味着$var1和$var2不相等.

请解释.

解决方法

智能搭档操作符将“通常做你想要的”.请阅读“不总是”.

42 ~~ 42.0返回true.

42 ~~“42.0”也返回true:将字符串与一个数字进行比较,因此被视为一个数字.同上“42”~~ 42.0.

“42”~~“42.0”返回false:两个参数都是字符串,这些字符串不会比较为“等于”,尽管它们的数字含义.你不会希望Perl将“两个”?“两点喔”视为真实的.

字符串可以通过添加零来强制为数字解释:

0“42”~~“42.0”再次返回true,因为第一个字符串被强制为42,而第二个字符串被强制为42.

perldoc perlsyn或perldoc perlop page定义了智能匹配的工作原理:

Object  Any       invokes ~~ overloading on $object,or falls back:
       Any     Num       numeric equality         $a == $b
       Num     numish[4] numeric equality         $a == $b
       undef   Any       undefined                !defined($b)
       Any     Any       string equality          $a eq $b

您可以看到字符串相等是默认值.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读