[ruby] Ruby에서 each.with_index와 each_with_index의 차이점은 무엇입니까?

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나중에 소개되었습니다.

  1. 다양한 열거 자와 함께 더 광범위하게 사용할 수 있습니다.
  2. 인덱스가 이외의 숫자에서 시작할 수 있도록 0합니다.

오늘날 with_index에는 일반 성과 가독성의 관점에서를 사용하는 것이 더 좋지만 코드 속도를 높이는 관점 each_with_index에서는 each.with_index.

몇 가지 방법을 간단하게 연결하여 단일 방법을 쉽게 표현할 수 있다고 생각되면 일반적으로 단일 방법이 체인보다 빠릅니다. 이것의 또 다른 예로서, reverse_each보다 빠른 실행됩니다 reverse.each. 이러한 방법은 존재하는 이유가 있습니다.


답변