2013-08-07 37 views
5

Trên trả lời chấp nhận cho String compare in Perl with "eq" vs "=="Perl so sánh đơn giản == vs eq

nó nói rằng First, eq is for comparing strings; == is for comparing numbers.

"== làm một so sánh số:. Nó chuyển đổi cả đối số cho một số và sau đó so sánh chúng"
"eq hiện một chuỗi so sánh: hai đối số phải phù hợp với giải nghĩa từ vựng (case-sensitive)"

Bạn chỉ có thể sử dụng eq cho chuỗi so sánh nhưng
cả eq VÀ == làm việc cho số so sánh

số là tập con của các chuỗi vì vậy tôi chỉ không hiểu tại sao bạn sẽ sử dụng ==

Có lý do nào bạn muốn sử dụng == để so sánh các giá trị số so với chỉ sử dụng eq cho tất cả?

Trả lời

11

Here is an example of why you might want ==:

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

3,0 là số lượng bằng 3, vì vậy nếu bạn muốn họ được bình đẳng, sử dụng ==. Nếu bạn muốn so sánh chuỗi, thì "3.0" không bằng "3", vì vậy trong trường hợp này bạn sẽ sử dụng eq. Cuối cùng, == là hoạt động rẻ hơn so với eq.

+0

ah vâng. có ý nghĩa. didnt nghĩ về trường hợp cụ thể đó. – ealeon

4

So sánh chuỗi chỉ đơn giản là khác nhau, đặc biệt là với số.

@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

Các vấn đề liên quan