标签: object-comparison

Javascript:深度比较

我正在检查这个问题Javascript深度比较 问题提问者的解决方案没有说服我所以我试图分析问题并提出了

var obj = {here: 2};
console.log(deepEqual(obj, obj));
// ? true
console.log(deepEqual(obj, {here: 1}));
// ? false
console.log(deepEqual(obj, {here: 2}));
// ? true
function deepEqual(a,b)
{
  if( (typeof a == 'object' && a != null) &&
      (typeof b == 'object' && b != null) )
  {
     var count = [0,0];
     for( var key in a) count[0]++;
     for( var key in b) count[1]++;
     if( count[0]-count[1] != 0) {console.log('1');return false;}
     for( var key in a)
     {
       if(!(key in b) || …
Run Code Online (Sandbox Code Playgroud)

javascript object-comparison

6
推荐指数
1
解决办法
6870
查看次数

Python pickle:腌制对象不等于源对象

我认为这是预期的行为,但想检查一下,也许找出原因,因为我所做的研究结果是空白

我有一个函数可以提取数据,创建自定义类的新实例,然后将其附加到列表中。该类仅包含变量。

然后,我使用协议 2 作为二进制文件将该列表腌制到文件中,稍后我重新运行脚本,从源中重新提取数据,我有一个包含自定义类实例的新列表,为了测试,我将数据保留为源数据相同。

重新加载pickle文件

现在当我做一个:

print source_list == pickle_list
Run Code Online (Sandbox Code Playgroud)

这总是会回来False,我不知道为什么,如果我打印列表或查看结构,它们看起来完全相同。

任何想法都会很棒,这是我需要整理的最后一点。

python pickle object-comparison

5
推荐指数
2
解决办法
2264
查看次数

Java整数池.为什么?

我到处都读到,当你在Java中定义-128到127之间的整数时,它不是创建一个新对象,而是返回一个已创建的对象.

除了让新手程序员比较Integer对象==以查看它们是否是相同的数字之外,我认为没有任何其他的做法,但我认为这很糟糕,因为他们确实认为他们可以比较任何整数==,并且也是教学任何编程语言的不良做法:比较两个"不同"对象的内容==.

为什么要这样做还有其他原因吗?或者在设计语言时(在我看来)像JavaScript中的可选分号一样,这只是一个错误的决定?

编辑:我在这里看到他们解释了行为:为什么整数常量池的行为在127处变化?

我问为什么他们设计它有这种行为,而不是为什么这种行为发生.

java object-comparison

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

equals方法是否适用于对象?如果是这样,怎么样?

我有一个动物园的计划,在动物园里有分支的亚群动物是爬行动物.当我做一个equals方法时,主程序编译并运行.我很困惑,如果我比较对象而不是特定的int或String,java知道如何使用equals方法?

public class Zoo {

    public static void main(String[]args) {
        Animal a=new Animal("Bob");
        Reptile komodo= new Reptile("Snakey");
        komodo.bask();
        a.size=3;
        komodo.size=5;
        System.out.println(a);
        System.out.println(komodo);
        Turtle t= new Turtle("Slowy");
        t.hide();
        t.size=6;
        t.numlegs=4;
        System.out.println(t);
        System.out.println(t.equals(komodo));
    }
}

public class Animal {
    public String name;

    public boolean equals(Animal other) {
        return other.size==this.size;
    }

    public Animal(String s) {
        name=s;
    }
    public void setName(String n) {
        this.name=n;
    }
    public void eat(String meal) {
        System.out.println("chump chump yummy "+meal);
    }
    public int size;

    public String toString() {
        return "I …
Run Code Online (Sandbox Code Playgroud)

java comparison object object-comparison

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

Python:在 pytest 中比较两个 JSON 对象

我有一个返回此 JSON 响应的 API

{
    "message": "Staff name and password pair not match",
    "errors": {
        "resource": "Login",
        "field": "staff_authentication",
        "code": "invalid",
        "stack_trace": null
    }
}
Run Code Online (Sandbox Code Playgroud)

使用 pytest,我想构建 JSON 对象的副本并确保它完全相同

import pytest
import json
from collections import namedtuple
from flask import url_for
from myapp import create_app

@pytest.mark.usefixtures('client_class')
class TestAuth:

    def test_login(self, client):
        assert client.get(url_for('stafflogin')).status_code == 405
        res = self._login(client, 'no_such_user', '123456')
        assert res.status_code == 422
        response_object = self._json2obj(res.data)
        assert response_object.message == 'Staff name and password pair not match'
        invalid_password_json = dict(message="Staff …
Run Code Online (Sandbox Code Playgroud)

python json object-comparison pytest

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

如何比较两个对象并获取更改的字段

我在这里记录对特定对象记录所做的更改。因此,我比较旧记录和更新记录,以将更新字段记录为字符串。知道我该怎么做吗?

java object-comparison

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

为什么我的比较if语句不起作用?

为什么下面的代码(在可可中)不起作用?

NSString *extension = [fileName pathExtension];
NSString *wantedExtension = @"mp3";
if(extension == wantedExtension){
//work
}
Run Code Online (Sandbox Code Playgroud)

在Xcode中,这只是在没有警告或错误的情况下运行,但是没有做我认为应该做的事情.

string cocoa objective-c object-comparison

3
推荐指数
2
解决办法
4282
查看次数

我可以使用==运算符来比较Java中的Point对象吗?

虽然我正在解决"破解编码面试"一书中的问题......我对此表示怀疑.问题是:

给定二维平面上的两个正方形,找到一条将这两个正方形切成两半的线.

解决方案:任何穿过矩形中心的线都必须将其切成两半.因此,如果你绘制一条连接两个正方形中心的线,它会将两个正方形切成两半.

   public class Square {
       public double left;
       public double top;
       public double bottom;
       public double right;
       public Square(double left, double top, double size) {
              this.left = left;
              this.top = top;
              this.bottom = top + size;
              this.right = left + size;
       }

       public Point middle() {
              return new Point((this.left + this.right) / 2,
                                           (this.top + this.bottom) / 2);
       }

       public Line cut(Square other) {
              Point middle_s = this.middle();
              Point middle_t = other.middle();
              if (middle_s == middle_t) {
                     return …
Run Code Online (Sandbox Code Playgroud)

java object-comparison object-identity

3
推荐指数
1
解决办法
3257
查看次数

AngularJS angular.equals在ng-show上的工作方式不同

我的控制器中有这些线

$scope.VLANEnabledServers = {};
$scope.myEmpty = {};
console.log(angular.equals($scope.myEmpty, $scope.VLANEnabledServers));
Run Code Online (Sandbox Code Playgroud)

ng-show在模板中

<table ng-show="!angular.equals(myEmpty, VLANEnabledServers)" ng-cloak class="table table-striped table-bordered ng-hide">
Run Code Online (Sandbox Code Playgroud)

angular.equals控制器中的功能打印TRUE正确.但在视图中,在条件ng-show!TRUEtable是反正显示

难道我做错了什么 ?

object-comparison angularjs ng-show

3
推荐指数
1
解决办法
1875
查看次数

比较两个对象会发生什么?

如果我为类Foo编写了一个运算符==(在C++中),究竟会发生什么?它是否将每个数据成员相互比较?

class Foo
{
   private:
      int bar;

   public:
      bool operator==(const Foo other&)
      {
         return *this == other; //what?
         //is this the same as bar == bar?
      }
}
Run Code Online (Sandbox Code Playgroud)

c++ oop object-comparison

2
推荐指数
1
解决办法
848
查看次数

使用 all.equal(x,y) 与 all.equal(y,x) 时顺序很重要:潜在的无限递归?

我试图测试不同 R 对象的相等性,发现有时,当以错误的顺序比较对象时,会发生以下错误:

错误:C 堆栈使用量 7975620 太接近限制

我说得对吗,这是递归太深的标志?

通过以下比较应该可以重现:

all.equal(mean, sd) # no error
all.equal(sd,mean) # Error: C stack usage 7975620 is too close to the limit
all.equal(NULL, mean) # no error
all.equal(mean,NULL) # Error: C stack usage 7975620 is too close to the limit 
all.equal(mean, sum); all.equal(sd, sum) # no Error
all.equal(sum,NULL) # no error
all.equal(sd, var) # no error
all.equal(var, mean) # Error: C stack usage 7975620 is too close to the limit
all.equal(var, NULL)  # Error: C …
Run Code Online (Sandbox Code Playgroud)

recursion r object-comparison

2
推荐指数
1
解决办法
170
查看次数

我应该覆盖Object.equals(Object)方法吗?

我有两个同一个类的实例.

public class Gilda {
    private String nome;
    public Gilda(String nome) {
        this.nome = nome;
    }
    // More stuff
}
Run Code Online (Sandbox Code Playgroud)

当尝试通过Object.equals(Object)方法比较它们时,它返回false.这很奇怪,因为nome在这两个实例上具有相同的值.

比较如何运作?这是预期的行为吗?我应该覆盖那种方法吗?

java equality equals object-comparison

0
推荐指数
1
解决办法
49
查看次数