Многие языки, кажется, имеют очень похожие структуры, называемые итеративными или перечислимыми. Это структуры, которые можно повторять или перечислять, что мне кажется очень похожим. Являются ли эти слова синонимичными или есть тонкое семантическое различие между итерируемым и перечислимым, которое оправдывает выбор термина?
16
Ответы:
ИМХО это зависит от контекста, иногда они синонимичны, иногда нет. Например, в C # у вас есть тип данных "IEnumerable", который классифицирует итераторы, но у вас также есть объявление "enum", которое предназначено для символических констант, а не специально для итераций. В других языках программирования (или других контекстах) ситуация может быть похожей или нет.
Если вы имеете в виду два слова как английские глаголы, а не как ключевые слова языка программирования, то
И поскольку для перечисления необходима итерация, а для перечисления подразумевается какая-то итерация, эти два описания процесса обычно можно взаимозаменять.
источник
Как уже говорили другие, точная семантика зависит от языка программирования, который использует термины, поэтому я дам чисто лингвистическую оценку.
«Итерируемое» - это довольно новое слово, очевидно, относящееся к «итерации» и «итераторам», которые встроены во многие языки. Следовательно, такие типы почти наверняка поддерживают итератор, но не обязательно что-либо еще, и не обязательно что-либо помимо самая основная функциональность итератора: обработка каждого элемента один раз. Сторнирование, удаление, измерение расстояний и т. Д. Могут поддерживаться или не поддерживаться.
«Перечислимый» относится к перечислению вещей, что может означать то же самое, что итерация, но только если язык уже не использует «повторяемость» для этой цели. Если в языке есть и то и другое, «перечисляемый» почти наверняка означает что-то еще, возможно, что-то более мощное. Скорее всего, он будет поддерживать идею о соединении каждого элемента с уникальным числовым индексом и, вероятно, позволит произвольный доступ (например, получение третьего элемента до первого и второго).
В этом весь смысл, который вы можете разумно понять из слов. В любой конкретной ситуации обратитесь к стандартной библиотеке API документации.
источник
Я хочу сосредоточиться на строгом определении обоих терминов
Iterable
это перебирать вещи и получать доступ к элементу один за другим.Я думаю, что термин
Enumerable
произошел от токарной машины. Речь идет о возможности перечислять элемент один за другим в правильном порядке. Вещи могут быть перечислены один за другимcountable
, каждый из них имеет уникальный индекс соответствия. Учитывая элемент, вы можете получить уникальный индекс. Учитывая индекс, вы можете найти только один возможный элемент, связанный с этим индексом.Другими словами,
Enumerable
подразумевает способность генерировать элементы. Например, некоторые языки программированияHaskell
реализовали эту идею. Существует класс типа Enum , и онChar
является одним из экземпляров.источник
перечисление считается, итерация - это повтор
второе перечисление даст то же число, итерация может быть вариацией
фракталы строятся путем итераций функции, повторяя функцию по результату последней итерации, каждая итерация имеет свое значение
источник