标签: equality

你如何测试双重是否等于NaN?

我有一个Java的双倍,我想检查它是否是NaN.做这个的最好方式是什么?

java double equality nan

274
推荐指数
4
解决办法
17万
查看次数

覆盖isEqual:和hash的最佳实践

你如何isEqual:在Objective-C中正确覆盖?"catch"似乎是如果两个对象相等(由isEqual:方法确定),它们必须具有相同的散列值.

" 可可基础指南"的 " 内省"部分确实有一个示例,说明如何为名为的类重写,如下所示:isEqual:MyWidget

- (BOOL)isEqual:(id)other {
    if (other == self)
        return YES;
    if (!other || ![other isKindOfClass:[self class]])
        return NO;
    return [self isEqualToWidget:other];
}

- (BOOL)isEqualToWidget:(MyWidget *)aWidget {
    if (self == aWidget)
        return YES;
    if (![(id)[self name] isEqual:[aWidget name]])
        return NO;
    if (![[self data] isEqualToData:[aWidget data]])
        return NO;
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

它检查指针相等性,然后检查类相等性,最后比较使用的对象isEqualToWidget:,它只检查namedata属性.该示例显示的是如何覆盖hash.

比方说,让我们假设有其他属性不会影响平等age.如果没有hash方法被覆盖,使得只有namedata影响哈希?如果是这样,你会怎么做?只需添加的哈希 …

equality objective-c

266
推荐指数
11
解决办法
9万
查看次数

Python中的False == 0和True == 1是一个实现细节还是由语言保证?

难道保证False == 0True == 1,在Python(假设他们没有被用户重新分配)?例如,无论Python的版本(现有的,可能的,未来的版本)是什么,它是否以任何方式保证以下代码将始终产生相同的结果?

0 == False  # True
1 == True   # True
['zero', 'one'][False]  # is 'zero'
Run Code Online (Sandbox Code Playgroud)

任何对官方文档的引用都将非常感谢!

编辑:正如许多答案所述,bool继承自int.因此,问题可以改写为:"文档是否正式表明程序员可以依赖于从整数继承的布尔值,以及值01?".这个问题与编写由于实现细节而不会失败的健壮代码有关!

python boolean equality language-specifications

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

通过Python中的属性比较对象实例是否相等

在Python中比较某些对象的两个实例是否相同的最佳方法是什么?我希望能够做类似的事情

例:

class MyClass:
    def __init__(self, foo, bar):
        self.foo = foo
        self.bar = bar
Run Code Online (Sandbox Code Playgroud)

编辑:

进一步澄清这个问题.我想通过属性值进行比较,并制作一个更通用的解决方案

x = MyClass('foo', 'bar')
y = MyClass('foo', 'bar')
Run Code Online (Sandbox Code Playgroud)

MyClass方法看起来应该是这样的吗?

>>> x == y
False
Run Code Online (Sandbox Code Playgroud)

python equality

219
推荐指数
7
解决办法
19万
查看次数

为什么x ==(x = y)与(x = y)== x不相同?

请考虑以下示例:

class Quirky {
    public static void main(String[] args) {
        int x = 1;
        int y = 3;

        System.out.println(x == (x = y)); // false
        x = 1; // reset
        System.out.println((x = y) == x); // true
     }
}
Run Code Online (Sandbox Code Playgroud)

我不确定Java语言规范中是否有一个项目要求加载变量的先前值以与右侧(x = y)进行比较,右侧()按括号隐含的顺序首先计算.

为什么第一个表达式评估false,但第二个表达式评估为true?我本来期望(x = y)先评估,然后它会x与自己(3)进行比较并返回true.


这个问题与Java表达式中子表达式的评估顺序不同,这x绝对不是这里的"子表达式".需要加载它以进行比较而不是"评估".这个问题是特定于Java的,而且这个表达式x == (x = y)不同于通常为棘手的面试问题精心设计的不切实际的结构,而是来自一个真实的项目.它应该是比较和替换成语的单行替代品

int oldX = x;
x = y;
return …
Run Code Online (Sandbox Code Playgroud)

java equality variable-assignment operator-precedence jls

206
推荐指数
10
解决办法
2万
查看次数

你如何在C中比较结构的相等性?

如何比较标准C中两个结构的实例是否相等?

c struct equality

202
推荐指数
5
解决办法
16万
查看次数

Java中的等于vs Arrays.equals

在比较Java中的数组时,以下两个语句之间是否有任何区别?

array1.equals(array2);
Arrays.equals(array1, array2);
Run Code Online (Sandbox Code Playgroud)

如果是这样,他们是什么?

java arrays equality

202
推荐指数
5
解决办法
16万
查看次数

在Objective-C中,Java的"instanceof"关键字相当于什么?

我想检查对象(例如someObject)是否可分配(可铸造)到另一种类型的变量(例如SpecifiedType).在Java中,我可以写:

someObject instanceof SpecifiedType
Run Code Online (Sandbox Code Playgroud)

一个相关的问题是查找对象的运行时类型是否等于另一种类型.在Java中,我可以写:

someObject.getClass().equals(SpecifiedType.class)
Run Code Online (Sandbox Code Playgroud)

如何在Objective-C中完成?

types casting equality objective-c downcast

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

如果不是Python == vs if!=

这两行代码有什么区别:

if not x == 'val':
Run Code Online (Sandbox Code Playgroud)

if x != 'val':
Run Code Online (Sandbox Code Playgroud)

一个比另一个更有效吗?

使用会更好吗?

if x == 'val':
    pass
else:
Run Code Online (Sandbox Code Playgroud)

python if-statement equality

175
推荐指数
5
解决办法
17万
查看次数

使用==比较Java中的浮点数有什么问题?

根据这个java.sun页面 ==是Java中浮点数的相等比较运算符.

但是,当我输入以下代码时:

if(sectionID == currentSectionID)
Run Code Online (Sandbox Code Playgroud)

进入我的编辑器并运行静态分析,我得到:"JAVA0078浮点值与==相比"

使用==比较浮点值有什么问题?这样做的正确方法是什么? 

java equality floating-accuracy

170
推荐指数
10
解决办法
15万
查看次数