1
Похоже, что в ruby 1.9.2, если to_s определено, проверка вернется to_s ?? Почему это изменится?Почему изменилось поведение to_s в Ruby 1.9.2?
Это:
class ToSClass
def to_s
"#{self.class.name} to_s called"
end
end
class InspectClass
def inspect
"#{self.class.name} inspect called"
end
end
class BothClass
def inspect
"#{self.class.name} inspect called"
end
def to_s
"#{self.class.name} to_s called"
end
end
c1 = ToSClass.new
puts c1.inspect
puts c1.to_s
c1 = InspectClass.new
puts c1.inspect
puts c1.to_s
c1 = BothClass.new
puts c1.inspect
puts c1.to_s
выводит это:
ToSClass to_s called
ToSClass to_s called
InspectClass inspect called
#<InspectClass:0x316baf8>
BothClass inspect called
BothClass to_s called
Возможно, вы имели в виду «Я запустил вашу программу на 1.9.2 и 1.8.7» или «1.9.2 и 1.9.1»? –
Я только что протестировал его в 1.8.7, и результаты остались прежними. Если только 'to_s' переопределяется,' inspect' вызовет это. – Chuck
К сожалению, я вставил неправильный выход программы. Я обновлю это. – AboutRuby