source

루비에 있는 각각의 자동 카운터?

ittop 2023. 7. 6. 22:36
반응형

루비에 있는 각각의 자동 카운터?

각각의 카운터와 카운터를 사용하고 싶습니다.

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

더 좋은 방법이 있을까요?

참고: 그럴지는 모르겠습니다.blahs배열 또는 해시이지만 해야 합니다.blahs[i]더 섹시하게 만들진 않을 거예요그리고 글을 쓰는 방법도 알고 싶습니다.i++루비로.


엄밀히 말하면 매트와 스퀴지의 답변이 1위였지만, 저는 파라도자에게 최선의 답변을 하고 있으므로 SO에 대한 요점을 조금 퍼뜨립니다.또한 그의 대답은 버전에 대한 노트를 가지고 있었는데, 이것은 여전히 관련이 있습니다(내 Ubuntu 8.04가 Ruby 1.8.6을 사용하는 한).


사용했어야 함puts "#{i} #{blah}"훨씬 더 간결한 것입니다.

사람들이 말했듯이, 당신은 사용할 수 있습니다.

each_with_index

그러나 "각자"와 다른 반복자를 가진 인덱스를 원하는 경우(예를 들어 인덱스로 매핑하려는 경우) 열거자를 각_with_index 메서드와 연결하거나 단순히 _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

당신은 이것을 가지고 할 수 없습니다.저는 보통 개인적으로 더 선언적인 전화를 하는 것을 좋아합니다.부분적으로 구문에 대한 제한을 누르면 다른 양식으로 전환하기가 쉽기 때문입니다.

네, 그렇습니다.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메소드를 사용하여 인덱스를 요소와 쌍으로 구성할 수 있습니다.

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++음, 루비에서는 그렇게 할 수 없습니다.i += 1당신이 가지고 있던 진술이 정확히 당신이 그것을 하는 방법입니다.

만약 당신이 각각의 루비 인덱스를 얻고 싶다면, 당신은 사용할 수 있습니다.

.each_with_index

다음은 방법을 보여주는 예입니다..each_with_index작업:

range = ('a'..'z').to_a
length = range.length - 1
range.each_with_index do |letter, index|
    print letter + " "
    if index == length
        puts "You are at last item"
    end
end

인쇄할 내용:

a b c d e f g h i j k l m n o p q r s t u v w x y z You are at last item

열거형 열거형 시리즈는 꽤 좋습니다.

한다면blahsEnumerable에서 혼합되는 클래스이므로 다음 작업을 수행할 수 있습니다.

blahs.each_with_index do |blah, i|
  puts("#{i} #{blah}")
end

언급URL : https://stackoverflow.com/questions/533837/automatic-counter-in-ruby-for-each

반응형