Как я могу преобразовать массив массивов в одну строку в Ruby

У меня есть массив массивов, выглядящих так:

arr = [[0,0,0,0,0], [0,0,1,0,0], [0,1,0,1,0], [0,0,1,0,0], [0,0,0,0,0]]

и я хочу, чтобы это выглядело так:

 00000
 00100
 01010
 00100
 00000

Я пытался так:

arr.each {|a| p a.join(',').gsub(',','')}

но это выводит это так:

 00000
 00100
 01010
 00100
 00000

с кавычками " " "в начале и конце каждой строки. Я хочу, чтобы это был один кусок, который начинается с кавычки, затем строки и в конце - кавычка. Но не цитирую каждый ряд.

3 ответа

Решение

join без аргумента:

arr.each{|el| puts el.join}

Пытаться

arr.map {|a| a.join}.join("\n")
puts arr.map(&:join)

призвание map проходит через массив (внешний) и для каждой записи вызывает join Способ; он возвращает новый массив, где каждая запись была заменена результатом.

join вызов метода массива to_s на каждой части массива и объединяет их с необязательным разделителем. призвание join без аргументов использует пустую строку (без разделителя).

призвание puts в массиве печатает каждую запись в отдельной строке.

Или, если вы хотите, чтобы конечные результаты были представлены в виде одной строки со встроенными переводами строки:

str = arr.map(&:join).join("\n")
Другие вопросы по тегам