De nombreuses langues semblent avoir des structures très similaires appelées itérables ou énumérables. Ce sont des structures qui peuvent être itérées ou énumérées, ce qui me semble des choses extrêmement similaires. Ces mots sont-ils synonymes ou existe-t-il une subtile différence sémantique entre itérable et énumérable qui justifie le choix du terme?
16
Réponses:
À mon humble avis, cela dépend du contexte, parfois ils sont synonymes, parfois ils ne le sont pas. Par exemple, en C #, vous avez un type de données "IEnumerable", qui classe les itérateurs, mais vous avez également la déclaration "enum" qui est pour les constantes symboliques, pas spécifiquement pour les itérations. Dans d'autres langages de programmation (ou d'autres contextes), la situation peut être similaire ou non.
Si vous entendez les deux mots comme des verbes anglais et non spécifiquement comme des mots-clés de langage de programmation, alors
Et puisque l'itération est nécessaire pour l'énumération, et que l'énumération implique une sorte d'itération, ces deux descriptions de processus peuvent généralement être échangées.
la source
Comme d'autres l'ont dit, la sémantique précise dépend du langage de programmation qui utilise les termes, je vais donc donner une évaluation purement linguistique.
"Iterable" est un mot assez nouveau, faisant évidemment référence à "itération" et aux "itérateurs" que de nombreuses langues ont intégrés. Par conséquent, de tels types prennent presque certainement en charge un itérateur, mais pas nécessairement autre chose, et pas nécessairement quelque chose au-delà la fonctionnalité d'itérateur la plus élémentaire: traiter chaque élément une fois. L'inversion, la suppression, la mesure de distances, etc. peuvent ou non être prises en charge.
"Enumerable" se réfère à l'énumération des choses, ce qui peut signifier la même chose que l'itération, mais seulement si le langage n'utilise pas déjà "itérable" à cette fin. Si une langue a les deux, "énumérable" signifie presque certainement autre chose, probablement quelque chose de plus puissant. Très probablement, il soutiendra la notion de connexion de chaque élément avec un index numérique unique, et il permettra probablement un accès aléatoire (par exemple, récupérer le troisième élément avant le premier et le deuxième).
C'est à peu près tout le sens que vous pouvez raisonnablement déduire des mots. Dans toute situation concrète, reportez-vous aux documents de l'API de bibliothèque standard.
la source
Je veux me concentrer sur la définition stricte des deux termes
Iterable
est d'itérer les choses, et d'avoir accès à l'élément un par un.Je pense que le terme
Enumerable
vient de la machine à tourner. Il s'agit de la possibilité de lister l'élément un par un dans un ordre approprié. Les choses peuvent être répertoriées une par unecountable
, chacune a un index de correspondance unique. Étant donné un élément, vous pouvez obtenir un index unique. Étant donné un index, vous ne pouvez trouver qu'un seul élément possible associé à cet index.En d'autres termes,
Enumerable
implique la capacité de générer les éléments. Certains langages de programmation, par exemple,Haskell
ont mis en œuvre cette idée. Il existe une classe de type Enum et enChar
est une instance.la source
l'énumération compte, l'itération est une relecture
une deuxième énumération donnera le même nombre, une itération peut être une variation
les fractales sont construites par itérations d'une fonction, répétant la fonction sur le résultat de la dernière itération, chaque itération a une valeur différente
la source