Muchos lenguajes parecen tener estructuras muy similares llamadas iterables o enumerables. Estas son estructuras que se pueden repetir o enumerar, que me parecen cosas extremadamente similares. ¿Son estas palabras sinónimos o hay una sutil diferencia semántica entre iterable y enumerable que justifique la elección del término?
16
Respuestas:
En mi humilde opinión, esto depende del contexto, a veces son sinónimos, a veces no lo son. Por ejemplo, en C # tiene un tipo de datos "IEnumerable", que clasifica los iteradores, pero también tiene la declaración "enum" que es para constantes simbólicas, no específicamente para iteraciones. En otros lenguajes de programación (u otros contextos) la situación puede ser similar o no.
Si quiere decir las dos palabras como verbos en inglés y no específicamente como palabras clave del lenguaje de programación, entonces
Y dado que la iteración es necesaria para enumerar, y la enumeración implica algún tipo de iteración, esas dos descripciones de proceso generalmente se pueden intercambiar.
fuente
Como han dicho otros, la semántica precisa depende del lenguaje de programación que usa los términos, por lo que daré una evaluación puramente lingüística.
"Iterable" es una palabra bastante nueva, que obviamente se refiere a "iterar" y a los "iteradores" que muchos lenguajes han incorporado. Por lo tanto, estos tipos casi seguramente admiten un iterador, pero no necesariamente cualquier otra cosa, y no necesariamente nada más allá de La funcionalidad de iterador más básica: procesar cada elemento una vez. Invertir, eliminar, medir distancias, etc. puede o no ser compatible.
"Enumerable" se refiere a enumerar cosas, que pueden significar lo mismo que iterar, pero solo si el lenguaje ya no usa "iterable" para ese propósito. Si un idioma tiene ambos, "enumerable" casi seguramente significa algo más, probablemente algo más poderoso. Lo más probable es que admitirá la noción de conectar cada elemento con un índice numérico único, y probablemente permitirá el acceso aleatorio (por ejemplo, recuperar el tercer elemento antes que el primero y el segundo).
Eso es todo el significado que puede inferir razonablemente de solo las palabras. En cualquier situación concreta, consulte los documentos API de la biblioteca estándar.
fuente
Quiero centrarme en la definición estricta de ambos términos
Iterable
es iterar cosas y obtener acceso al elemento uno por uno.Creo que el término
Enumerable
se originó en la máquina de torneado. Se trata de la capacidad de enumerar el elemento uno por uno en un orden adecuado. Las cosas se pueden enumerar una por una tiene que sercountable
, cada una tiene un índice de correspondencia único. Dado un elemento, puede obtener un índice único. Dado un índice, solo puede encontrar un elemento posible asociado con ese índice.En otras palabras,
Enumerable
implica la capacidad de generar los elementos. Algún lenguaje de programación, por ejemplo,Haskell
ha implementado esta idea. Hay una clase de tipo Enum , yChar
es una de las instancias.fuente
la enumeración es contar, la iteración es una repetición
una segunda enumeración producirá el mismo número, una iteración puede ser una variación
los fractales se construyen mediante iteraciones de una función, repitiendo la función en el resultado de la última iteración, cada iteración tiene un valor diferente
fuente