== , = 和 eq 之间的区别
Posted
技术标签:
【中文标题】== , = 和 eq 之间的区别【英文标题】:Difference between == , = and eq 【发布时间】:2013-08-26 02:30:58 【问题描述】:我想知道这些之间的区别:
my $a = 1;
和
my $a == 1;
和
my $a eq 1;
【问题讨论】:
perlmonks.org/?node_id=276023,第二次命中Google search 这是一个非常好的和有用的问题,也是 PERL 中经常遇到的问题。 【参考方案1】:== 用于比较数值。
eq 用于比较字符串值。
= 是赋值运算符,而不是比较运算符。
【讨论】:
【参考方案2】:eq
用于测试字符串相等性,==
是相同的东西,但用于数字相等性。
For More Click Here
【讨论】:
【参考方案3】:最后两个语句什么都不做,使用指令是一个好习惯:
use warnings;
use strict;
例如:
#!/usr/bin/perl
use warnings;
use strict;
my $a == 1;
my $b eq 1;
print "$a $b\n";
您应该会看到一些警告,例如:
Useless use of numeric eq (==) in void context at main.pl line 5.
Useless use of string eq in void context at main.pl line 6.
Use of uninitialized value $a in numeric eq (==) at main.pl line 5.
Use of uninitialized value $b in string eq at main.pl line 6.
Use of uninitialized value $a in concatenation (.) or string at main.pl line 8.
Use of uninitialized value $b in concatenation (.) or string at main.pl line 8.
【讨论】:
【参考方案4】:你不应该在任何 perl 程序中看到第二个或第三个例子。如果你这样做了,那么假设原始程序员的意思是别的(比如my $a = 1;
)就不会牵强。如果您使用 strict 和 warnings pragma,它们都会发出警告消息:
use strict;
use warnings;
my $a == 1;
# ==> Useless use of numeric eq (==) in void context at -e line 3.
# ==> Use of uninitialized value $a in numeric eq (==) at -e line 3.
您还应该尽量避免在任何 perl 程序中使用 $a
或 $b
作为变量,因为这些被认为是排序时使用的特殊变量。你通常可以侥幸逃脱,但最好不要惹他们。
【讨论】:
以上是关于== , = 和 eq 之间的区别的主要内容,如果未能解决你的问题,请参考以下文章
Mockito Matchers isA、any、eq 和 same 有啥区别?