Mi experiencia en matemáticas es muy pobre (es decir, la última clase de matemáticas relevante tomada fue Trigonometría de secundaria hace dos años, otra historia para otro momento). Estoy leyendo 'Javascript: la guía definitiva' y es un término que se usa de forma repetitiva y acabo de ejecutarlo. Pero he llegado a un capítulo (Capítulo 6 - Objetos) donde mi falta de comprensión del término y su aplicación en la programación / POO está empezando a ser perjudicial para el proceso de aprendizaje. Los diccionarios en línea no están ayudando, entonces ¿alguien tiene una definición y / o ejemplo más explicable para mostrar?
object-oriented
definition
gr33kbo1
fuente
fuente
Respuestas:
Matemáticamente, enumerable significa "puede colocarse en una correspondencia uno a uno con los números naturales". La mayoría de las representaciones en computación son enumerables porque están hechas de cadenas de bits y se pueden tomar cadenas de bits para denotar números en el sistema binario.
Sin embargo, algunas representaciones de datos no se consideran enumerables. Por ejemplo, un número de coma flotante está hecho de bits, pero trabajamos con él como una aproximación a un número real. En el nivel binario podemos "contar" a través de números consecutivos de coma flotante, pero generalmente esto no es relevante en aplicaciones numéricas.
En algunas otras situaciones, la enumeración es posible, pero no hay acuerdo sobre una enumeración. Por ejemplo, todos los objetos en su imagen en tiempo de ejecución constituyen un conjunto finito y se pueden enumerar. El recolector de basura hace eso cuando camina a través de los objetos vivos. Pero la aplicación no enumera el conjunto de todos los objetos de esa manera sin tener en cuenta los límites de tipo o módulo; enumera los objetos más pequeños del mismo tipo o relacionados.
Por lo general, cuando existe una enumeración formal, existe un acuerdo de todas las partes. Aquí hay un conjunto de valores. Este es el primero. Ese es su sucesor, y así sucesivamente.
En algunos lenguajes de programación, existen tipos enumerados: alguna forma disciplinada de definir constantes simbólicas con nombre que el compilador asigna a valores enteros únicos. Si dichos tipos están fuertemente tipados, entonces estas constantes solo pueden almacenarse en variables de su tipo correspondiente, denominado tipo enumerado . Por ejemplo, una enumeración definida por el usuario de tipo
month
sólo puede tomar los valoresjanuary
a través dedecember
. Estos se reducen a los valores del 0 al 11, y pueden permitir la aritmética, comosuccessor(january)
producirfebruary
, o la posibilidad de usar la enumeración como un índice de matriz: definir una matrizdays[january..december]
dondedays[january]
está, digamos, 31. El propósito de un tipo enumerado, por lo tanto, es servir como un subconjunto de los números naturales, por otros nombres que son distintos y proporcionan claridad de significado (se usan nombres en lugar de constantes numéricas) y verificación de tipos: el colorred
de unacolor
enumeración no se puede asignar a unamonth
enumeración de tipos .El verbo enumerartambién se usa para denotar el concepto de consultar una API para recuperar una lista de objetos, generalmente de manera gradual: enumerar las interfaces de red, enumerar los archivos en un directorio, etc. Siempre que un objeto se encuentre en una correspondencia 1: N con otros objetos, es susceptible de admitir una API de enumeración que nos permita recorrer esos objetos hermanos o recuperarlos como una lista. La terminología es un poco turbia; por ejemplo, en algunos casos, incluso si los elementos no están en un orden particular, pero todos pueden ser visitados sin repetición, sigue siendo una enumeración. Algunas estructuras de datos de conjuntos dinámicos, como las tablas hash, no proporcionan un orden particular y pueden reorganizarse a medida que crecen y se reducen, de modo que el orden real varía cuando se realizan inserciones y eliminaciones.
A
puede venir antesB
, pero cuando insertamosC
, ahoraB
sucede antesA
porque se llevó a cabo una reorganización interna.fuente
Acabo de sacar mi copia de JavaScript: la guía definitiva , pasé al capítulo 6 y leí rápidamente la sección 6.5 Propiedades de enumeración . Ahora, debo agregar que tampoco soy una persona matemática particularmente fuerte, así que espero que esto tenga sentido:
Específicamente, "enumerable" significa que hay algún tipo de esquema de ordenamiento que tiene lugar, de modo que puede abordar rápida / fácilmente los elementos en ese conjunto / secuencia / colección (o, en esa sección de JavaScript: la guía definitiva , el objeto) .
Para aplicarlo a lo que está leyendo en el libro, cuando el autor dice que las propiedades con las que extiende una clase son enumerables , simplemente dice que cualquier propiedad que agregue a un objeto (no las que se heredan) puede iterarse terminado. Entonces, si creas un objeto
obj
así:... cuando iteras sobre él con el siguiente bucle (estoy usando nombres de variables descriptivas aquí):
... verá tres elementos registrados en su consola JS:
Esto le está diciendo que las propiedades de objeto
obj
, se enumeran las teclasa
,b
, yc
.fuente
a, b, c
son propiedades enumerables? Y, alternativamente, una propiedad no enumerable es una propiedad que no está enumerada por claves.for-in
bucle.Un enumerable es un objeto que puede enumerarse. "Enumerado" significa contar a los miembros de un conjunto / colección / categoría uno por uno (generalmente en orden, generalmente por nombre).
Un enumerable es un objeto que puede atravesar una serie de otros objetos uno por uno.
fuente