Это помогает? Я не могу сказать, что вы пытаетесь сделать.
5.times do |count|
puts 'In condition ' + %w(one two three four five)[count]
end
5.times do |count|
будет выполнять блок пять раз с count
, начиная с нуля и увеличивая каждый раз. %w(one two three four five)
совпадает с ["one", "two", "three", "four", "five"]
.
Если вы хотите сделать пять разных вещей подряд, вам не нужен цикл. Просто поместите утверждения в ряд:
# do thing 1
# do thing 2
# do thing 3
# ...
Редактировать
«У меня есть массив, который я хочу пройти по циклу, но каждый элемент в массиве должен проходить через разные условия каждый раз, а затем перезапускаться при первом условии.»
Чтобы бесконечно проходить по массиву, проверяя каждый элемент на соответствие условиям:
arr = ['sdfhaq', 'aieei', 'xzhzdwz']
loop do
arr.each do |x|
case x
when /..h/
puts 'There was a \'h\' at the third character.'
when /.{6}/
puts 'There were at least six characters.'
else
puts 'None of the above.'
end
end
end
Редактировать 2 :
"Спасибо за ответ, я пытаюсь сделать цикл по массиву и применить каждый элемент массива к 10 различным условиям, например: array [has 100 elements] element 1 получает условие 1 element 2 переходит к условию 2 и т. д., поскольку существует 10 условий, 11-й элемент в массиве снова получит условие 1 и т. д. условие 1, условие 2, условие "
Вам нужно будет использовать метод %
для чисел.
arr = Array.new(130) # an array of 130 nil elements.
num_conditions = 10
arr.each_with_index do |x, i|
condition = (i + 1) % num_conditions
puts "Condition number = #{condition}"
end
Дополнительная информация: http://ruby -doc.org / core / classes / Fixnum.html # M001059
Редактировать три :
def send_an_email(email, server)
puts "Sending an email with the text #{email.inspect} to #{server}."
end
email_servers = ['1.1.1.1', '2.2.2.2']
emails = ['How are you doing?', 'When are you coming over?', 'Check out this link!']
emails.each_with_index do |email, i|
send_an_email email, email_servers[i % email_servers.length]
end
Вы можете изменить email_servers
и emails
и заставить его работать, даже если длины изменены.