Rails консоль, странный вопрос

Я печатаю следующее:

>> x.inspect
"\"53219847091d6601dd000004\""

>> "53219847091d6601dd000004".inspect
"\"53219847091d6601dd000004\""

 >> "53219847091d6601dd000004"==x
 false

Они одинаковы, так почему они не равны друг другу?

1 ответ

Решение

inspect возвращает строковое представление вашего объекта, его реализация зависит от класса:

class Foo
  def inspect
    "I'm Foo"
  end
end

class Bar
  def inspect
    "I'm Foo"
  end
end

foo = Foo.new
bar = Bar.new

foo.inspect
#=> "I'm Foo"

bar.inspect
#=> "I'm Foo"

foo а также bar имеют те же inspect значение, но они не равны:

foo == bar
#=> false

На самом деле это абсолютно разные объекты:

foo.class #=> Foo
bar.class #=> Bar
Другие вопросы по тегам