[Rubby] 반복 처리에 색인 추가 (each with index, with index)

1. 이번 주제


루비의 반복 처리(each와 맵 방법 등)를 사용할 때 두 번째 파라미터를 지정하여 색인을 흔들 수 있어 매우 편리합니다!이렇게 되면
색인은 1, 2, 3, 4... 의 번호를 가리킨다.
여러 가지 용도가 있지만 차트 일람표(1위 ●2위 ▲ 3위 ■...등의 순서 배정) 등을 만드는 것도 편리하다.

2. 인덱스되지 않은 경우(일반적인 중복 처리)


본론에 들어가기 전에 색인이 없을 때의 중복 처리를 복습하세요.
다음은 일반적인 each 문장입니다.
book.rb
@books = Book.all
# Bookモデルの全てのデータをインスタンス変数@booksに代入

@books.each{|book| puts "この本の名前は#{book.name}です"}
# こちら通常のeach文です。@booksをそれぞれbookに代入し、book.nameの値をputsで出力するコードです。
# 以下出力結果の例です。
# => この本の名前はハリーポッターです
# => この本の名前はロードオブザリングです
# => この本の...

3. 다음 인덱스의 경우(each with index 방법)


book.rb
@books.each_with_index{|book, index| puts "#{index}:この本の名前は#{book.name}です"}
# 第二引数に新しくindexが加わりました。(※引数名はご自身で好きに変えてOK)
# 以下出力結果の例です。
# => 0:この本の名前はハリーポッターです
# => 1:この本の名前はロードオブザリングです
# => 2:この本の名前はワンピースです
# => 3:この本の名前はキングダムです
출력 결과로 볼 때 처리 순서대로 0부터 번호가 차였음을 알 수 있습니다!
그러나 색인의 번호는 0부터 시작한다.
보통 1부터 번호를 매기는 경우가 많지만 이렇게 되면 하나씩 1을 붙여야 하기 때문에 불편하다.
하지만 안심하세요.
사실 저는 1부터 번호를 누르고 싶어요!이런 상황에서도 방법이 있다.

4. 지정된 숫자로 색인을 시작할 때 (each.with index(n) ※ n= 숫자


book.rb
@books.each.with_index(1){|book, index| puts "#{index}:この本の名前は#{book.name}です"}
# => 1:この本の名前はハリーポッターです
# => 2:この本の名前はロードオブザリングです
아까랑 다른 게 두 개예요.
①each_with_index가 아니라 each야.with_index
②each.with_index 다음에 (1) 에서 초기 값을 1로 지정합니다.(100)로 설정하면 100부터 시작합니다.

5. 다른 방법의 with인덱스 넣어도 돼요.


each 방법을 예로 들면 다른 중복 처리에도 사용할 수 있습니다.
맵 방법을 예로 들다
animal.rb
animals = [dog, cat, rabbit]
animals.map.with_index(1){|animal, i| "#{i}:#{animal}"}
# 以下出力結果の例です。
# => 1:dog
# => 2:cat
# => 3:rabbit
아주 편리하군요!하지만 2장에서 설명한 맵처럼-with_index 이런 건 이 상황에서는 안 돼!
each_with_index를 쓸 수 있는 건 each 방법밖에 없는 특권입니다.
다른 중복 처리에서 사용되는 경우 withindex를 사용하세요.
잘 이용하세요.
시청해 주셔서 감사합니다!

좋은 웹페이지 즐겨찾기