each
Rubyでループの開始オフセットを設定するにはどうすればよいですか? a[3]
の代わりにループを開始したいa[0]
。どうすれば設定できますか?
a = [ab, cd, ef, gh, hi, jk]
a.each do |i|
#some stuff
end
each
Rubyでループの開始オフセットを設定するにはどうすればよいですか? a[3]
の代わりにループを開始したいa[0]
。どうすれば設定できますか?
a = [ab, cd, ef, gh, hi, jk]
a.each do |i|
#some stuff
end
別の、おそらくより直接的で読みやすい可能性は、次を使用することArray#drop
です。
a.drop(3).each do |i|
# do something with item i
end
から継承された他のメソッドと組み合わせると、これは本当に素晴らしいEnumerable
ので、命令型each
ループに代わるより良い方法がある可能性があります。抽出されたスライスをフィルタリングし、後で変換したいとします。
a = [0,1,2,3,4,5,6,7]
a.drop(3).select(&:even?).map { |x| x * 2 }
# => [8, 12]
または、すべての値のリストを出力したいとします。
a = ["1", "2", "3", "4", "5"]
puts a.drop(3).join("\n")
出力:
4
5
関数型プログラミングから継承されたこれらの機能は、Ruby を非常に強力なものにしています :)
配列のサブパーツで使用each
します。以下の例では、4 番目の要素から最後まで:
a[3..-1].each do |i|
#some stuff
end
これはあなたを助けるでしょう
a[3..-1].each do |i|
#your logic
end
ほとんどの Rubyist は古き良き for ループを忘れています。
n = 3
for i in n...a.size
puts a[i]
end