Я просматриваю тестовые задачи Ruby и работаю над проблемой 11, словарем. Окончательный тест в spec-файле требует, чтобы я печатал все ключи и значения хэша (слова и их определения) в определенном формате.Как отформатировать вывод хэша в Ruby?
Как это сделать? Существует ли конкретное имя для этого типа вывода? Я не могу понять, как заставить вывод выглядеть так, или что означают все лишние символы.
it 'can produce printable output like so: [keyword] "definition"' do
@d.add('zebra' => 'African land animal with stripes')
@d.add('fish' => 'aquatic animal')
@d.add('apple' => 'fruit')
@d.printable.should == %Q{[apple] "fruit"\n[fish] "aquatic animal"\n[zebra] "African land animal with stripes"}
end
Когда я запускаю метод и просто возвращает хэш, обычно это говорит, что это:
expected: "[apple] \"fruit\"\n[fish] \"aquatic animal\"\n[zebra] \"African land animal with stripes\""
Обновление 6:38 вечера по тихоокеанскому времени
Я не могу ответить на мои собственные вопросы еще так что вот мое решение:
Первая попытка:
def printable
print_string = ""
@hash1.sort.each do |k,v|
print_string = print_string + "[" + k + "]" + " " + "#{v.to_s}" + "\n"
end
print_string.chomp
end
Он вернулся в основном правильный ответ, но я не мог понять, как получить кавычки определений слова:
=> «[яблоко] фрукты \ п [рыба] водное животное \ п [ зебра] Африканское сухопутное животное с полосками «
Я попытался использовать обертку% Q {} из спецификации и решил проблему с кавычками. Затем я переработал свои обозначения переменных и таких, как показано ниже.
Это ответ, который я наконец придумал:
def printable
printable_string = ""
@hash1.sort.each do |k,v|
printable_string = printable_string + %Q{[#{k}] "#{v}"\n}
end
return printable_string.chomp
end
Он возвращает правильный ответ:
=> "[яблоко] \" фрукты \ "\ п [рыбы] \" Aquatic животное \ "\ п [зебра] \" African сухопутное животное с полосами \ ""
Что такое 'printable'? – whatyouhide
Printable - это метод, который выводит хеш в указанном формате. – jhietter