ルビのループeach
の開始オフセットを設定するにはどうすればよいですか? ループをa[0]
ではなくa[3]
から開始します。どうすれば設定できますか?Ruby - 各開始オフセット
a = [ab, cd, ef, gh, hi, jk]
a.each do |i|
#some stuff
end
ルビのループeach
の開始オフセットを設定するにはどうすればよいですか? ループをa[0]
ではなくa[3]
から開始します。どうすれば設定できますか?Ruby - 各開始オフセット
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を非常に強力にするものです:
配列のsubpartにeach
を使用してください。以下の例では、4番目の要素から最後まで:
a[3..-1].each do |i|
#some stuff
end
a [a.size - 1] .each do | i | – JohnMerlino
これは
a[3..-1].each do |i|
#your logic
end
ほとんどRubyistのは、ループの古き良き忘れるあなたを助ける:
n = 3
for i in n...a.size
puts a[i]
end
新しいスコープを導入していないので、それは嫌です。これは 'do/end'を使用するので直感的ではありません。また、オペレーションは、インデックスではなく配列項目を列挙したいと考えました。 –
ハァッ?それぞれdo/endも使用しますか?新しいスコープが必要な場合は、procクロージャを使用しないで、ループ内でメソッド呼び出しを使用してください。 forとeachのコードブロックの主義の違いがある場合、私はそれを知りたいと思います(私もループのために使用しません:) –
とにかく、私はコードの代わりに[i]を追加しました。どうも。 –
どのプログラミング言語がこのプログラミングスタイルに影響を与えましたか? – Vass
@Vass LISP以降のHaskellでは、永続的な単一リンクリストに大いに依存しています。このスタイルはかなり一般的です(例えば、 'map'、' filter'、 'take'、' drop'、 'zip'あなたもRubyの 'Enumerable'モジュールにあります) –
バイナリ検索や他のソートアルゴリズムを実装している間に、dropのようなさまざまなメソッドを見るのが良いでしょう。 – Donato