Код ниже работает нормально. Но это кажется неуклюжим.Как объединить в одну строку в Ruby?
Как вы бы описали код в одной строке?
data = Array.new
@results.each{ |result| data.push(result.get_output) }
data.join("\n")
Рубин 1.9.3
Код ниже работает нормально. Но это кажется неуклюжим.Как объединить в одну строку в Ruby?
Как вы бы описали код в одной строке?
data = Array.new
@results.each{ |result| data.push(result.get_output) }
data.join("\n")
Рубин 1.9.3
Map оригинальная коллекция, а не создавать новый массив первых:
@results.map(&:get_output).join("\n")
Я не проверял, но попробовать что-то вроде:
data = @results.map{ |result| result.get_output }.join("\n")
Строго говоря, это не то же самое, что 'data' никогда не содержал массив' join'ed, только массив и вызывал на нем 'join'. Но это может быть просто педантичным. –
@AndrewMarshall, да, вы правы. Я предполагал это намерение, поскольку последняя строка не мутирует ничего, поэтому она должна быть в конце метода и возвращаться так или иначе. –
@ EdwardOcampo-Gooding Да, последняя строка ничего не мутирует. Это весь метод. Я должен был поставить 'def' и' end' в вопросе. –
data = @results.collect(&:get_output).join("\")
collect
(или карту) для создания массиваЕсли вы получаете пустые строки, добавьте compact
перед тем присоединиться. Это помогает очистить результаты.
У вас заканчиваются линии? Я могу отправить вам еще немного, если вам нравится ... :) –
Я думал, что должен быть лучший, более красноречивый способ. Использование {} .join –