1. ホーム
  2. ruby

[解決済み] Rubyの自動カウンタ?

2022-06-11 12:33:37

質問

for-eachとカウンタを使いたいのですが、どうすればいいですか?

i=0
for blah in blahs
    puts i.to_s + " " + blah
    i+=1
end

もっと良い方法はないのでしょうか?

注意してください。 私は blahs が配列なのかハッシュなのか分かりませんが、このように blahs[i] をしなければならないのは、あまりセクシーではありません。あと、以下のような書き方も知りたいです。 i++ をRubyで書く方法を知りたいです。


技術的には、MattとSqueegyの回答が最初に来たのですが、私はparadojaにベストアンサーを与えているので、SOで少しポイントを分散しています。また、彼の回答にはバージョンについての注記がありましたが、これはまだ関連しています (私の Ubuntu 8.04 が Ruby 1.8.6 を使用している限りにおいて)。


使用すべきは puts "#{i} #{blah}" を使うべきでした。

どのように解決するのですか?

みんなが言っているように

each_with_index

を使うことができますが、もし "each" とは異なるイテレータでインデックスが欲しい場合(例えばインデックスでマップしたい場合など)、each_with_indexメソッドで列挙子を連結するか、単にwith_indexを使うことができます。

blahs.each_with_index.map { |blah, index| something(blah, index)}

blahs.map.with_index { |blah, index| something(blah, index) }

これは、ruby 1.8.7や1.9からできることです。