美文网首页
对象的同一性

对象的同一性

作者: 半岛爱 | 来源:发表于2017-06-20 14:23 被阅读0次

    所有的对象都有标识和值。

    标识(ID)用来表示对象同一性。Ruby中所有对象都是唯一的,对象的ID可以通过 (或者 )方法取得。

    ary1 = []

    ary2 = []

    p ary1.object_id #=> 67653636p

     ary2.object_id #=> 67650432

    我们用 方法判断两个对象是否同一个对象(ID是否相同)

    str1 = "foo"

    str2 = str1str3="f"+"o"+"o"

    p str1.equal?(str2) #=> truep str1.equal?(str3) #=> false

    对象的“值”就是对象拥有的信息。例如,只要对象的字符串内容相等,Ruby就会认为对象的值相等。Ruby使用==来判断对象的值是否相等。

    str1 = "foo"str2="f"+"o"+"o"

    p str1 == str2 #=> true

    除了==以外,Ruby还提供 方法用来判断对象的值是否相等。 与 都是 类定义的方法,大部分情况下它们的执行结果都是一样的。但也有例外,数值类会重定义 方法,因此执行后有不一样结果。

    p 1.0 == 1 #=> true

    p 1.0.eql?(1) #=> false

    凭直觉来讲,把1.0与1判断为相同的值会更加方便。在一般情况进行值的比较时使用==,但是在一些需要进行更严谨的比较的程序中,就需要用到eql?方法。例如,0与0.0作为散列的键时,会判断为不同的键,这是由于散列对象内部的键比较使用了eql?方法来判断。

    hash={0=>"0"}

    p hash[0.0] #=> nilp hash[0] #=> "0"

    相关文章

      网友评论

          本文标题: 对象的同一性

          本文链接:https://www.haomeiwen.com/subject/yggoqxtx.html