Perl简单比较:==与eq

8
在关于Perl中使用"eq"和"=="进行字符串比较的回答中,它说首先,eq用于比较字符串; ==用于比较数字。 "==进行数字比较:它将两个参数转换为数字,然后将其进行比较。" "eq进行字符串比较:两个参数必须在词典上匹配(区分大小写)"
你只能使用eq来比较字符串,但是对于比较数字,eq和==都可以使用。
因为数字是字符串的子集,所以我不明白你为什么要使用==。
你是否有使用==来比较数值而不是使用eq的原因?
2个回答

15

这里有一个为什么你可能需要使用==的示例:

$a = "3.0";
print "eq" if $a eq "3"; # this will not print
print "==" if $a == 3;   # this will print

数字3.0等于3,所以如果你想让它们相等,使用==。如果你要进行字符串比较,则"3.0"不等于"3",因此在这种情况下,您应该使用eq。最后,==是一种比eq更便宜的操作。


啊,是的。有道理。我没有考虑到那个特定的情况。 - ealeon

4

字符串比较与数字有很大不同。

@s_num=sort {$a <=> $b} (20,100,3);   # uses explicit numeric comparison
print "@s_num\n";                     # prints 3 20 100, like we expect

@s_char=sort (20,100,3);              # uses implicit string comparison
print "@s_char\n";                    # prints 100 20 3, not so good.

-Tom Williams


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接