Вот простой узел графа:
Node = Struct.new(:value, :children) do
def initialize(value, children=[]); super; end
end
Часто я хочу посмотреть на это в консоли pry
или irb
. Проблема в том, что когда я подключаю график и смотрю на узел, я получаю такой результат:
[1] pry(main)> node
=> #<struct Node
value=13,
children=
[#<struct Node
value=23,
children=
[#<struct Node:...>,
#<struct Node
value=19,
children=[#<struct Node:...>, #<struct Node value=10, children=[#<struct Node:...>]>]>]>,
#<struct Node value=28, children=[#<struct Node:...>]>,
#<struct Node value=2, children=[#<struct Node:...>]>,
#<struct Node value=14, children=[#<struct Node:...>]>]>
и Т. Д.
Это быстро выходит из-под контроля и трудно читается. Я могу определить более читаемый to_s
на узле:
def to_s; "<#{value} #{children.collect(&:value)}>"; end
Но мне все еще нужно позвонить puts node
, чтобы увидеть это:
[1] pry(main)> puts node
<13 [23, 28, 2, 14]>
=> nil
Просто набрав node
в консоли, я получаю исходный подробный вывод (как в pry
, так и в irb
). Раздражает вводить puts
каждый раз, когда я хочу посмотреть на свое более компактное представление node
в отладчике.
Есть ли какой-то метод, который я могу определить, чтобы переопределить значение отображения консоли объекта? (Я думал, что переопределение inspect
сделает это, но это не так.)