답변:
이 with_index
메서드는 시작 인덱스를 오프셋하는 선택적 매개 변수를 사용합니다. each_with_index
동일한 작업을 수행하지만 선택적 시작 색인이 없습니다.
예를 들면 :
[:foo, :bar, :baz].each.with_index(2) do |value, index|
puts "#{index}: #{value}"
end
[:foo, :bar, :baz].each_with_index do |value, index|
puts "#{index}: #{value}"
end
출력 :
2: foo
3: bar
4: baz
0: foo
1: bar
2: baz
each_with_index
이전에 Ruby에 도입되었습니다. with_index
나중에 소개되었습니다.
0
합니다.오늘날 with_index
에는 일반 성과 가독성의 관점에서를 사용하는 것이 더 좋지만 코드 속도를 높이는 관점 each_with_index
에서는 each.with_index
.
몇 가지 방법을 간단하게 연결하여 단일 방법을 쉽게 표현할 수 있다고 생각되면 일반적으로 단일 방법이 체인보다 빠릅니다. 이것의 또 다른 예로서, reverse_each
보다 빠른 실행됩니다 reverse.each
. 이러한 방법은 존재하는 이유가 있습니다.
reverse
예제 에서는 reverse
열거자가 아닌 다른 배열을 반환합니다. 열거자를 반환했다면 좋은 구현으로 더 느려서는 안됩니다.
with_index
오프셋 시작 인덱스 허가증with_index
과 함께 사용될 때 일반적으로 선호된다map
,reduce
,collect
등 즉,map.with_index
더 이상 판독한다each_with_index.map
. 어떤 의미에서와 함께 사용하면map
존재하지 않는map_with_index
방법 의 대립 입니다.