2012-03-25 9 views
0
> 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はあまりにも醜いです。これを達成するために美しいですか?は、それぞれのモジュールで数またはサイクル(4)に美しい方法がありますか?

+1

なぜそれは醜いと思いますか?その巨大な文字列を2つの小文字に分割しても問題ありません。 – Sergey

答えて

2

あなたがしようとしていることは、非常に珍しいことです。境界条件はどうですか?

おそらく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 
+0

これはもっと酷い方法だと思いますか?ではない ? :Dありがとう。 –

関連する問題