Есть ли красивый способ для модуляции числа или цикла (4) в каждом? - PullRequest
0 голосов
/ 25 марта 2012
> a = %w[foo1 foo2 foo3 foo4 foo5 foo6]
 => ["foo1", "foo2", "foo3", "foo4", "foo5", "foo6"] 


> a.each_with_index {|b,i| puts "b #{i}"; puts "== mod4 "  if i%4==0}
b 0
== mod4 
b 1
b 2
b 3
b 4
== mod4 
b 5

У меня есть array a.Я хочу перебрать каждый элемент и поместить что-то каждые 4 элемента.Однако if i%4 == 0 слишком уродлив.Есть ли прекрасное, чтобы достичь этого?

1 Ответ

2 голосов
/ 25 марта 2012

То, что вы пытаетесь сделать, довольно необычно. А как насчет граничных условий?

Может быть, вы можете успешно использовать each_slice?

a.each_slice(4) do |group|
  group.each{|i| p i}
  puts "== mod4"
end

# Prints:
"foo1"
"foo2"
"foo3"
"foo4"
== mod4
"foo5"
"foo6"
== mod4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...