for-each와 카운터를 사용하고 싶습니다.
i=0
for blah in blahs
puts i.to_s + " " + blah
i+=1
end
더 좋은 방법이 있습니까?
참고 :blahs
배열인지 해시 인지 는 모르겠지만 blahs[i]
더 해야하지는 않습니다. 또한 i++
루비 로 쓰는 법을 알고 싶습니다 .
기술적으로 Matt와 Squeegy의 대답은 처음에 왔지만, 나는 paradoja에 대한 가장 좋은 대답을하고 있습니다. 또한 그의 대답에는 버전에 대한 메모가 있었으며 여전히 Ubuntu 8.04가 Ruby 1.8.6을 사용하는 한 관련이 있습니다.
puts "#{i} #{blah}"
훨씬 간결한 것을 사용해야 합니다.
답변
사람들이 말했듯이 사용할 수 있습니다
each_with_index
그러나 “각”과 다른 반복자가있는 인덱스를 원할 경우 (예를 들어, 인덱스 또는 이와 유사한 것을 사용하여 매핑하려는 경우) each_with_index 메소드로 열거자를 연결하거나 with_index를 사용할 수 있습니다.
blahs.each_with_index.map { |blah, index| something(blah, index)}
blahs.map.with_index { |blah, index| something(blah, index) }
루비 1.8.7과 1.9에서 할 수있는 일입니다.
답변
[:a, :b, :c].each_with_index do |item, i|
puts "index: #{i}, item: #{item}"
end
당신은 이것을 위해 이것을 할 수 없습니다. 나는 보통 어쨌든 각자에게보다 선언적인 부름을 좋아한다. for 구문의 한계에 도달하면 다른 양식으로 쉽게 전환 할 수 있기 때문입니다.
답변
예, collection.each
루프를 수행 한 다음 each_with_index
인덱스를 가져옵니다.
루비 책을 읽어야 할 것입니다. 루비 책은 근본적인 루비이므로 모르는 경우 큰 어려움에 처하게됩니다 ( http://poignantguide.net/ruby/ ).
Ruby 소스 코드에서 가져온 것 :
hash = Hash.new
%w(cat dog wombat).each_with_index {|item, index|
hash[item] = index
}
hash #=> {"cat"=>0, "wombat"=>2, "dog"=>1}
답변
의 새 버전이없는 경우이 메소드를 each_with_index
사용하여 zip
색인을 요소와 쌍을 지정할 수 있습니다 .
blahs = %w{one two three four five}
puts (1..blahs.length).zip(blahs).map{|pair|'%s %s' % pair}
어떤 생산 :
1 one
2 two
3 three
4 four
5 five
답변
에 대한 질문에 관해서 i++
는 Ruby에서 그렇게 할 수 없습니다. i += 1
당신이 한 문장은 당신이 그것을 할 거 야 정확한 방법이다.
답변
열거 열거 시리즈는 꽤 좋다.
답변
blahs
Enumerable에서 혼합되는 클래스 인 경우 다음 을 수행 할 수 있어야합니다.
blahs.each_with_index do |blah, i|
puts("#{i} #{blah}")
end