답변:
IMHO 이것은 상황에 따라 다르며 때로는 동의어이며 때로는 그렇지 않습니다. 예를 들어, C #에는 반복자를 분류하는 "IEnumerable"데이터 유형이 있지만 반복적으로 구체적이 아닌 기호 상수에 대한 "enum"선언도 있습니다. 다른 프로그래밍 언어 (또는 다른 상황)에서 상황은 비슷하거나 다를 수 있습니다.
프로그래밍 언어 키워드가 아닌 영어 동사로 두 단어를 의미한다면,
그리고 열거를 위해 반복이 필요하고 열거는 어떤 종류의 반복을 의미하므로,이 두 프로세스 설명은 일반적으로 교환 될 수 있습니다.
다른 사람들이 말했듯이, 정확한 의미론은 용어를 사용하는 프로그래밍 언어에 달려 있으므로 순전히 언어 평가를하겠습니다.
"반복 가능"은 많은 언어가 내장 한 "반복"과 "반복자"를 분명히 언급하는 다소 새로운 언어입니다. 따라서 이러한 유형은 거의 확실히 반복자를 지원하지만 반드시 다른 것을 의미하지는 않습니다. 가장 기본적인 반복자 기능 : 모든 항목을 한 번 처리합니다. 역전, 삭제, 거리 측정 등이 지원되거나 지원되지 않을 수 있습니다.
"Enumerable"은 항목을 열거하는 것으로, 반복과 같은 의미 일 수 있지만 언어에서 해당 목적에 대해 "iterable"을 사용하지 않는 경우에만 가능합니다. 언어에 "열거 가능"이라는 용어가 모두 있다면, 아마도 더 강력한 무언가를 의미 할 것입니다. 대부분의 경우, 각 요소를 고유 한 숫자 색인으로 연결한다는 개념을 지원하며 임의 액세스를 허용 할 수 있습니다 (예 : 첫 번째 및 두 번째 요소 이전에 세 번째 요소 검색).
그것은 단지 단어들로부터 합리적으로 추론 할 수있는 모든 의미에 관한 것입니다. 구체적인 상황에서는 표준 라이브러리 API 문서를 참조하십시오.
두 용어의 엄격한 정의에 집중하고 싶습니다
Iterable
일을 반복하고 요소에 하나씩 액세스하는 것입니다.
이 용어 Enumerable
는 터닝 머신에서 유래 한 것으로 생각 됩니다. 적절한 순서로 요소를 하나씩 나열하는 기능에 관한 것입니다. 사물은 하나씩 나열 될 수 있으며 countable
각각 고유 한 대응 색인을 갖습니다. 요소가 주어지면 고유 인덱스를 얻을 수 있습니다. 인덱스가 주어지면 해당 인덱스와 관련된 가능한 요소는 하나만 찾을 수 있습니다.
즉, Enumerable
요소를 생성하는 기능을 의미합니다. 예를 들어 일부 프로그래밍 언어 Haskell
는이 아이디어를 구현했습니다. 거기에있다 열거 형 클래스, 그리고 Char
하나의 인스턴스입니다.
Prelude> fromEnum True
1
Prelude> fromEnum False
0
Prelude> toEnum 1 :: Bool
True
Prelude> fromEnum 'a'
97
Prelude> enumFromTo 'a' (toEnum 122 :: Char)
"abcdefghijklmnopqrstuvwxyz"
열거가 계산되고 반복이 재생 중입니다.
두 번째 열거는 같은 수를 산출하며, 반복은 변형 일 수 있습니다.
프랙탈은 함수의 반복에 의해 만들어지고 마지막 반복의 결과에서 함수를 반복하며 각 반복은 다른 값을 갖습니다.