In Python, ich eine Liste einfach erstellen kann Listen Werte verschiedenen Typen, z .:Kann eine statisch typisierte Sprache heterogene Listen unterstützen?
[0, 1.0, '2', MyClass(3)]
jedoch in den statisch typisierten Sprachen Ich bin vertraut mit, können nur Werte eines einzigen Typs enthält. Zum Beispiel kann C++ std::vector<T>
nur Werte des Typs T
enthalten. C# List<T>
ist ähnlich.
Kann eine statisch typisierte Sprache heterogene Listen unterstützen? Wenn ja, welche Sprachen haben diese Unterstützung?
Sie könnten eine Liste von 'boost :: any' Typen haben. 'any' wurde für C++ 17 in den Standard übernommen, aber ich bin mir nicht sicher, ob eine Implementierung verfügbar ist. Es verwendet eine Technik, die als Löschen bezeichnet wird, um den Elementen zu erlauben, alles zu speichern. Der Nachteil, soweit ich weiß, ist, dass die Items einer vordefinierten Schnittstelle entsprechen müssen oder erst gegossen werden müssen, bevor sie verwendet werden können. –