Почему выдается значений свойств объекта, а не сам объект?

Почему выдается значений свойств объекта, а не сам объект?
class Point
    attr_accessor :x, :y
    def initialize(x, y) 
        @x, @y = x, y
    end
    def add! ob
        @x += ob.x
        @y += ob.y
    end
    def add ob
        q = self.dup
        q.add! ob
        q                  #!!! Я же возвращаю сам объект а не его свойства
    end
end
po1 = Point.new(3,5)
po2 = Point.new(6,8)
p po1.add po2 # => 9, 13


Или так.
def add! ob
    @x += ob.x
    @y += ob.y
     self
end
def add ob
    q = self.dup
    q.add! ob
end
  • Вопрос задан
  • 2264 просмотра
Пригласить эксперта
Ответы на вопрос 3
viktorvsk
@viktorvsk
У меня никакие значения не вывелись.
Да и в консоли мало смысла выводить объекты с помощью print, p, puts... они по дефолту к строке приводятся
521e57f0ed8a4f81ae6d799219f673e1.png
Ответ написан
gruut
@gruut Автор вопроса
И у меня тоже
Нашел причину. У меня в Point определен метод to_s без него все нормально работает. В чем причина такого поведения?
def to_s
    "#@x, #@y"
end

это что p x просто вызывает x.to_s
Ответ написан
Комментировать
mastedm
@mastedm
Потому что
p foo
на самом деле это
puts foo.inspect
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы