Что определяет, что возвращает/показывает irb?

Как irb решает, как представлять объект, возвращаемый оператором?

> "foo"
=> "foo"
> 2
=> 2

Я думал, что это эквивалент print object.inspect или что-то в этом роде, но ничего из того, что я пытаюсь, не возвращает тот же результат.


person John Bachir    schedule 21.04.2012    source источник
comment
Вызов inspect в обоих ваших примерах дает указанный результат. Может быть, привести пример, где это не так?   -  person Andrew Marshall    schedule 21.04.2012
comment
Он просто печатает obj.inspect, где obj — это возвращаемое значение предыдущего выражения.   -  person texasbruce    schedule 21.04.2012
comment
Хм... ты прав. Когда я задавал вопрос, я экспериментировал с HTTParty::Response в контексте pry, который использует pretty_inspect. Я не могу найти, где определено pretty_inspect для HTTParty::Response... это, вероятно, ответит на мое замешательство.   -  person John Bachir    schedule 22.04.2012


Ответы (1)


Итак, irb реализует REPL. Это в значительной степени делает это за кулисами:

loop do
  '> '.display
  input = gets.chomp
  value = eval input
  puts " => #{value.inspect}"
end
person Matheus Moreira    schedule 21.04.2012