标签: equality

为什么("foo"=== new String("foo"))在JavaScript中评估为false?

在比较字符串值时,我会一直开始使用===(三等号,严格比较),但现在我发现了

"foo" === new String("foo")
Run Code Online (Sandbox Code Playgroud)

是假的,与此相同:

var f = "foo", g = new String("foo");
f === g; // false
Run Code Online (Sandbox Code Playgroud)

当然:

f == g; // true
Run Code Online (Sandbox Code Playgroud)

那么建议总是使用==进行字符串比较,或者总是在比较之前将变量转换为字符串?

javascript equality object

98
推荐指数
3
解决办法
5328
查看次数

正确的方法来重写Equals()和GetHashCode()

我之前从未真正这样做过,所以我希望有人可以告诉我正确实现我的类的Except()和GetHashCode()的重写.

我正在尝试修改类,以便我可以使用LINQ Except()方法.

public class RecommendationDTO{public Guid RecommendationId { get; set; }
public Guid ProfileId { get; set; }
public Guid ReferenceId { get; set; }
public int TypeId { get; set; }
public IList<TagDTO> Tags { get; set; }
public DateTime CreatedOn { get; set; }
public DateTime? ModifiedOn { get; set; }
public bool IsActive { get; set; }
public object ReferencedObject { get; set; }
public bool IsSystemRecommendation { get; set; }
public int VisibilityScore { get; …
Run Code Online (Sandbox Code Playgroud)

c# equality gethashcode

94
推荐指数
3
解决办法
12万
查看次数

测试单个向量的所有元素之间的相等性

我正在尝试测试向量的所有元素是否彼此相等.我提出的解决方案似乎有点迂回,都涉及检查length().

x <- c(1, 2, 3, 4, 5, 6, 1)  # FALSE
y <- rep(2, times = 7)       # TRUE
Run Code Online (Sandbox Code Playgroud)

unique():

length(unique(x)) == 1
length(unique(y)) == 1
Run Code Online (Sandbox Code Playgroud)

rle():

length(rle(x)$values) == 1
length(rle(y)$values) == 1
Run Code Online (Sandbox Code Playgroud)

一个允许我包含容差值的解决方案,用于评估元素之间的"平等",这是避免FAQ 7.31问题的理想选择.

是否有我完全忽略的测试类型的内置函数?identical()all.equal()比较两个R对象,因此它们在这里不起作用.

编辑1

以下是一些基准测试结果.使用代码:

library(rbenchmark)

John <- function() all( abs(x - mean(x)) < .Machine$double.eps ^ 0.5 )
DWin <- function() {diff(range(x)) < .Machine$double.eps ^ 0.5}
zero_range <- function() {
  if (length(x) == 1) …
Run Code Online (Sandbox Code Playgroud)

equality r vector

88
推荐指数
9
解决办法
6万
查看次数

php == vs === operator

php中==和===有什么区别?我不确定何时使用两者.

更新的注释:因此它显示在StackOverflow搜索中,==和===之间的差异与!=和!==之间的差异相同.

php comparison equality operators

87
推荐指数
0
解决办法
5万
查看次数

你如何测试函数和闭包是否相等?

书中说"功能和闭包是参考类型".那么,你怎么知道引用是否相等?==和===不起作用.

func a() { }
let å = a
let b = å === å // Could not find an overload for === that accepts the supplied arguments
Run Code Online (Sandbox Code Playgroud)

以下是Catterwauls如何处理这个问题:

MultiClosures和Equatable Closures

测试

closures equality swift

83
推荐指数
5
解决办法
1万
查看次数

为什么1234 =='1234 test'评估为真?

可能重复:
php == vs === operator

对我确定的人来说,这是一个简单的答案.有人可以解释为什么这个表达式评估为真?

(1234 == '1234 test')
Run Code Online (Sandbox Code Playgroud)

php equality equals

80
推荐指数
4
解决办法
5333
查看次数

Python dict如何具有相同哈希的多个键?

我试图了解引擎盖下的python哈希函数.我创建了一个自定义类,其中所有实例都返回相同的哈希值.

class C(object):
    def __hash__(self):
        return 42
Run Code Online (Sandbox Code Playgroud)

我只是假设上面的类中只有一个实例可以随时出现在一个集合中,但实际上一个集合可以有多个具有相同散列的元素.

c, d = C(), C()
x = {c: 'c', d: 'd'}
print x
# {<__main__.C object at 0x83e98cc>:'c', <__main__.C object at 0x83e98ec>:'d'}
# note that the dict has 2 elements
Run Code Online (Sandbox Code Playgroud)

我进行了一些实验,发现如果我重写__eq__方法使得类的所有实例比较相等,那么该集只允许一个实例.

class D(C):
    def __eq__(self, other):
        return hash(self) == hash(other)

p, q = D(), D()
y = {p:'p', q:'q'}
print y
# {<__main__.D object at 0x8817acc>]: 'q'}
# note that the dict has only 1 element
Run Code Online (Sandbox Code Playgroud)

所以我很想知道dict有多个具有相同哈希的元素.谢谢!

注意:编辑问题以给出dict(而不是set)的例子,因为答案中的所有讨论都是关于dicts的.但这同样适用于集合; 集合也可以有多个具有相同散列值的元素.

python hash dictionary equality set

79
推荐指数
3
解决办法
3万
查看次数

C#.Equals(),. ReferenceEquals()和==运算符

我对这三个的理解是:

  • .Equals()测试数据平等(缺乏更好的描述)..Equals()可以为同一对象的不同实例返回True,这是最常被覆盖的方法.

  • .ReferenceEquals() 测试两个对象是否是同一个实例,并且不能被覆盖.

  • ==ReferenceEquals()默认情况下与此相同,但可以覆盖此项.

C#站说:

在对象类中,EqualsReferenceEquals方法在语义上是等效的,除了ReferenceEquals它只在对象实例上有效.该 ReferenceEquals方法是静态的.

现在我没理解.任何人都可以对此有所了解吗?

c# equality

76
推荐指数
3
解决办法
5万
查看次数

double equals vs在python中

我在Python解释器中运行以下代码:

>>> foo = 10
>>> dir(foo) == dir(10)
True
>>> dir(foo) is dir(10)
False
>>> 
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

python comparison boolean equality equals

74
推荐指数
1
解决办法
8万
查看次数

Common Lisp中的eq,eql,equal和equalp有什么区别?

什么之间的区别eq,eql,equalequalp,在Common Lisp的?我知道其中一些检查类型,其中一些检查所有类型,但哪个是哪个?什么时候比其他人更好用?

syntax equality common-lisp

69
推荐指数
3
解决办法
3万
查看次数