Я предполагаю, что вы хотите:
Today I have todo:
sleep
eat
powernap
Для этого вы можете использовать map, чтобы обернуть каждый элемент в закладке и символ новой строки, а затем join превратить строки в массив в одну строку.
todos.map {|todo| "\t#{todo}\n"}.join("")
Это будет помещать новую строку и вкладку вокруг каждого элемента, а затем объединить каждый элемент вместе. Обратите внимание, что он использует конкатенацию, используя #{}
для вставки переменной в строку. Это также могло быть "\t" + todo + "\n"
, это точно так же.
Результат:
"\tsleep\n\teat\n\tpowernap\n"
Тогда вы можете сцепить, что со строкой, ничего особенного не требуется.
puts "Today I have todo:\n" +
todos.map {|todo| "\t#{todo}\n"}.join("") +
"I hope I get them done!\n"
Существует множество способов сделать это, но важно то, что он должен производить строку. each
не будет работать, потому что он будет производить массив, и вы получите что-то вроде этого:
Today I have todo:
["sleep", "eat", "powernap"]
I hope I get them done!
Если вы хотите, вы можете сделать это в качестве интерполяции строк, помещая все выражение в #{}
внутри строки , Вот более простой пример, который превращает список в строку, разделенную запятыми.
puts "Today I have todo: #{todos.join(", ")}\n"
Любое выражение может перейти в #{}
, но #{}
должно содержать полное выражение! Каждый #{}
будет запускаться сам по себе, и каждый результат будет конкатенирован в строку.
'' Сегодня у меня есть todo: \ n \ t # {todos.join ("\ n")} "' – Aguardientico
Спасибо, это сработало отлично, именно то, что мне было нужно. –