在Perl中,为什么有单独的运算符进行字符串比较(eq
,ne
)与数字比较(==
,!=
)?为什么使用两组独立的运算符而不是使用单个运算符进行字符串和数字比较?
答案 0 :(得分:3)
只要感觉评估表达式,Perl就会执行自动类型转换。这需要两个运算符,因此程序员可以区分字符串和数字比较:
print "eq" if "02" eq "2"; # string comparison -- no output
print "==" if "02" == "2"; # numeric comparison -- will print "=="
以上摘自this thread on PerlMonks。以下是该主题的其他信息:
==
而不是eq
的一个原因是,如果您使用非数字的地方,您可以收到警告。eq
而非==
的一个原因是字符串转换会丢失几个小数位,因此您会因浮点舍入错误而推迟出现虚假不等式。2 == $val
而不是$val == 2
。它看起来很奇怪,但是这种方式=
而不是==
的常见错误会给你一个立即的编译错误,而不是一个令人讨厌的错误。