当前位置:  开发笔记 > 后端 > 正文

平等和等同之间有什么区别?

如何解决《平等和等同之间有什么区别?》经验,为你挑选了4个好方法。

我读过几个使用等价符号的数学和计算机科学实例?(基本上是一个带有三行的'='),对我来说,读这个就好像是平等一样.这两个概念有什么区别?



1> Eugene Yokot..:

维基百科:等价关系:

在数学中,等价关系是集合中两个元素之间的二元关系,它们将它们组合在一起,以某种方式"等同".设a,b和c为某个集合X的任意元素.然后"a~b"或"a≡b"表示a等于b.

等价关系"〜"是反身的,对称的和传递的.

换句话说,=只是等价关系的一个实例.

编辑:这种看似简单的反身,对称和传递的标准并不总是微不足道的.参见Bloch的Effective Java 2nd ed p.35例如,

public final class CaseInsensitiveString {
...
    // broken
    @Override public boolean equals(Object o) {
        if (o instance of CaseInsensitiveString)
            return s.equalsIgnoreCase(
                ((CaseInsensitiveString) o).s);
        if (o instanceof String) // One-way interoperability!
            return s.equalsIgnoreCase((String) o);
        return false;
    }
... 

}

以上等于实现打破了对称性,因为CaseInsensitiveString知道String类,但String类不知道CaseInsensitiveString.



2> dreeves..:

我把你的问题看作是数学符号而不是编程.您引用的三重等号可以用HTML或\equivLaTeX 编写.

a≡b最常见的意思是"a被定义为b"或"令a等于b".

所以2 + 2 = 4但是φ≡(1 + sqrt(5))/ 2.

这是一个方便的等价表:

Mathematicians      Computer scientists
--------------      -------------------
      =                      ==
      ?                      =

(关于等价关系的其他答案也是正确的,但我认为这些并不常见.还有一个≡b(mod m),发音为"a与b,mod m一致",并且用程序员的说法表示作为mod(a,m)== mod(b,m).换句话说,a和b在用m修改之后是相等的.)



3> Michel..:

许多语言区分对象的相等性和这些对象的值的相等性.

例如,Ruby有3种不同的方法来测试相等性.第一个,相等?,比较两个变量,看它们是否指向同一个实例.这相当于一种C风格的语言,即检查2个指针是否指向同一地址.第二种方法==,测试值相等性.所以3 == 3.0在这种情况下是正确的.第三个,eql ?,比较值和类类型.

Lisp还有不同的平等概念,具体取决于您要测试的内容.


+1这对程序员来说是一个很好的实用描述.平等意味着"a是b".等价意味着"a就像b".

4> Robert Gambl..:

在我所看到的区分平等和等价的语言中,平等通常意味着类型值是相同的,而等价意味着只有值是相同的.例如:

int i = 3;
double d = 3.0;

我和d将具有等价关系,因为它们代表相同的值而不是相等,因为它们具有不同的类型.其他语言可能有不同的等价思想(例如两个变量是否代表同一个对象).

推荐阅读
有风吹过best
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有