Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 平等?那么eql呢?Fixnum上的运算符_Ruby - Fatal编程技术网

Ruby 平等?那么eql呢?Fixnum上的运算符

Ruby 平等?那么eql呢?Fixnum上的运算符,ruby,Ruby,根据定义,equal?检查两个对象是否相同,其中Aseql?检查类是否相同,值是否相同 x = 'hi' y = 'hi' x.equal? y # => false x.eql? y # => true x = 1 y = 1 x.equal? y # => true x.eql? y # => true 为什么第二个x相等?y正确?x和y不是Fixnum的两个实例吗?为什么它不适用于上面示例中所示的Fixnum/Float?,因为x和y实际上指的是完全相同的对象。

根据定义,
equal?
检查两个对象是否相同,其中As
eql?
检查类是否相同,值是否相同

x = 'hi'
y = 'hi'
x.equal? y # => false
x.eql? y # => true

x = 1
y = 1
x.equal? y # => true
x.eql? y # => true

为什么第二个
x相等?y
正确
x
y
不是
Fixnum
的两个实例吗?为什么它不适用于上面示例中所示的
Fixnum
/
Float

,因为
x
y
实际上指的是完全相同的对象。与字符串不同,每个整数值在任何给定时间都只有一个实例

参考:

任何给定整数值[…]实际上只有一个Fixnum对象实例

编辑: 为了更清楚一点,您可能需要查看这些对象的对象\u id:

irb(main):001:0> x = 1
=> 1
irb(main):002:0> y = 1
=> 1
irb(main):003:0> x.object_id
=> 3
irb(main):004:0> y.object_id
=> 3 # Same ID as above
irb(main):005:0> x = 'hi'
=> "hi"
irb(main):006:0> y = 'hi'
=> "hi"
irb(main):007:0> x.object_id
=> 70287051883000
irb(main):008:0> y.object_id
=> 70287051869720 # Different ID than X

因为
x
y
实际上指的是完全相同的对象。与字符串不同,每个整数值在任何给定时间都只有一个实例

参考:

任何给定整数值[…]实际上只有一个Fixnum对象实例

编辑: 为了更清楚一点,您可能需要查看这些对象的对象\u id:

irb(main):001:0> x = 1
=> 1
irb(main):002:0> y = 1
=> 1
irb(main):003:0> x.object_id
=> 3
irb(main):004:0> y.object_id
=> 3 # Same ID as above
irb(main):005:0> x = 'hi'
=> "hi"
irb(main):006:0> y = 'hi'
=> "hi"
irb(main):007:0> x.object_id
=> 70287051883000
irb(main):008:0> y.object_id
=> 70287051869720 # Different ID than X

我知道这个问题已经得到了回答,但我将添加关于对象id的问题

my_字符串x='1'
=> "1"
irb(主):025:0>y=x
=> "1"
irb(主):026:0>x是否相等?Y
=>正确
irb(主要):027:0>x“1测试”
irb(主):028:0>y
=>“1测试”
irb(主):029:0>nope=nope
=>零

我知道这个问题已经得到了回答,但我将添加关于对象id的问题

my_字符串x='1'
=> "1"
irb(主):025:0>y=x
=> "1"
irb(主):026:0>x是否相等?Y
=>正确
irb(主要):027:0>x“1测试”
irb(主):028:0>y
=>“1测试”
irb(主):029:0>nope=nope
=>零