Как установить для переменной условие if

#ruby

#ruby

Вопрос:

У меня есть это условие:

 arr1 = [1, 2, 3, 4]

arr1.each do |num|
  if num == arr1.last
    print "#{num}n"
    exit
  else
    print "#{num} x "
  end
end
  

и я должен напечатать это как переменную, возможно, с именем num_printer, чтобы, если я напишу

   puts num_printer
  

он должен напечатать это

   1 x 2 x 3 x 4
  

Но я не знаю, как это сделать.
Кто-нибудь может мне помочь?

Комментарии:

1. Я не вижу num_printer определенного метода…

2. » возможно , вызывается num_printer» @orde…

Ответ №1:

Существуют более простые способы сделать это, как указывает Maxim в своем ответе, но чтобы ответить на ваш вопрос, вы могли бы выполнить это, инициализировав пустую строковую переменную, а затем в своем each блоке добавив текст к переменной вместо ее печати:

 arr1 = [1, 2, 3, 4]
nums_str = ""

arr1.each do |num|
  if num == arr1.last
    nums_str << num.to_s
  else
    nums_str << "#{num} x "
  end
end

puts nums_str
# => 1 x 2 x 3 x 4
  

Смотрите Это на repl.it : https://repl.it/@jrunning/ArcticDeficientArchitecture

Комментарии:

1. arr1.last подозрительно — что, если перед последним есть еще 4?

2. @steenslag Я согласен, но это вопрос к OP.

Ответ №2:

По сути, вы хотите вставить что-то (‘x’ в вашем случае) между элементами и вывести результат. Используйте соединение

 puts arr1.join(' x ')