En Python, je peux facilement créer une liste contenant des valeurs de différents types, par exemple .:Un langage typé statiquement peut-il prendre en charge des listes hétérogènes?
[0, 1.0, '2', MyClass(3)]
Cependant, dans les je connais, les listes ne peuvent contenir que des langues statiquement typé valeurs d'un seul type. Par exemple, std::vector<T>
de C++ ne peut contenir que des valeurs de type T
. Le List<T>
de C# est similaire.
Est-il possible qu'un langage typé statiquement supporte des listes hétérogènes? Si oui, quelles langues ont un tel support?
Vous pouvez avoir une liste de types 'boost :: any'. 'any' a été accepté dans la norme pour C++ 17 mais je ne suis pas sûr si une implémentation est disponible. Il utilise une technique appelée effacement de type, pour permettre aux éléments de stocker n'importe quoi. L'inconvénient de ce que je sais est que les éléments doivent se conformer à une interface prédéfinie ou doivent être moulés avant de pouvoir être utilisés. –