Какова __repr__ эквивалентность в рубине? - PullRequest
9 голосов
/ 13 апреля 2010

Функция python __repr__ необычна, так как она вызывается, когда print OBJECT используется автоматически.

Есть ли у него рубиновая эквивалентность? Я думал, что это было to_s, но у меня было p OBJECT, кажется, не вызывает метод to_s.

Добавлена ​​

Я понял что-то не так, p OBJECT вызывает метод to_s следующим образом. Я получил некоторые подсказки от моих ответов на мой другой вопрос. - Вопрос о методе to_s Руби (из книги Axe 2-е издание)

# Sample code from Programing Ruby, page 24
class Song
  def to_s
    "Song"
  end
end

class Songson < Song
  def to_s
    super + "<Songson>"
  end
end

song = Songson.new()
p song

Ответы [ 2 ]

11 голосов
/ 13 апреля 2010
  obj.inspect => string

Возвращает строку, содержащую удобочитаемое представление obj. Если не переопределено, для создания строки используется метод to_s.

   [ 1, 2, 3..4, 'five' ].inspect   #=> "[1, 2, 3..4, \"five\"]"
   Time.new.inspect                 #=> "Wed Apr 09 08:54:39 CDT 2003"

 obj.to_s => string

Возвращает строку, представляющую obj. По умолчанию to_s печатает класс объекта и кодировку идентификатора объекта. В особом случае объект верхнего уровня, который является начальным контекстом выполнения программ Ruby, возвращает `` main. ’‘

источник

3 голосов
/ 13 апреля 2010

p объект использует # inspect.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...