each.with_index
과 의 차이점에 대해 정말 혼란 스럽습니다 each_with_index
. 그들은 다른 유형을 가지고 있지만 실제로는 동일한 것처럼 보입니다.
답변
이 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
. 이러한 방법은 존재하는 이유가 있습니다.