Превращение целого числа в массив строк с помощью Ruby - PullRequest
1 голос
/ 05 октября 2019
Ruby 2.6

У меня есть переменная (целое число):

 num_rows = 7

Я хотел бы превратить ее в массив номеров строк. Я сделал:

rows_arr = []
num_rows = 5
i = 0
while i < num_rows
  rows_arr << "Row: #{i+1}"
  i += 1
end

, что дает мне:

=> ["Row: 1", "Row: 2", "Row: 3", "Row: 4", "Row: 5"]

Есть ли более чистый или более элегантный способ сделать это?

Ответы [ 3 ]

4 голосов
/ 05 октября 2019

Вы можете сделать что-то подобное:

num_rows=5
(1..num_rows).map { |n| "Row: #{n}" }
=> ["Row: 1", "Row: 2", "Row: 3", "Row: 4", "Row: 5"]
1 голос
/ 05 октября 2019
   rows_arr = num_rows.times.map { |i| "Row: #{i + 1}" }
1 голос
/ 05 октября 2019
nbr_rows = 5

["Row: "].product((1..nbr_rows).to_a).map(&:join)
  #["Row: 1", "Row: 2", "Row: 3", "Row: 4", "Row: 5"] 

Шаги следующие.

a = (1..nbr_rows).to_a
  #=> [1, 2, 3, 4, 5] 
b = ["Row: "].product(a)
  #=> [["Row: ", 1], ["Row: ", 2], ["Row: ", 3], ["Row: ", 4], ["Row: ", 5]] 
b.map(&:join)
  #=> ["Row: 1", "Row: 2", "Row: 3", "Row: 4", "Row: 5"] 

См. Массив # product и Массив # join . Обратите внимание, что join преобразует элементы a (целые числа) в строки.

Это просто другой способ сделать это, используя часто пропускаемый метод Array#product. На практике я предпочитаю решение @ Константина, так как думаю, что оно читается лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...