В Python, я могу легко создать список, содержащий значения различных типов, например .:Может ли статически типизированный язык поддерживать гетерогенные списки?
[0, 1.0, '2', MyClass(3)]
Однако в статически типизированных языках я знаком с, списки могут содержать только значения одного типа. Например, в C++ std::vector<T>
могут храниться только значения типа T
. C# List<T>
аналогичен.
Возможно ли, чтобы статически типизированный язык поддерживал гетерогенные списки? Если да, то какие языки имеют такую поддержку?
У вас может быть список типов 'boost :: any'. 'any' был принят в стандарт для C++ 17, но я не уверен, доступна ли реализация. Он использует метод, называемый стиранием стилей, чтобы позволить элементам хранить что-либо. Недостатком этого, насколько я знаю, является то, что элементы должны соответствовать предопределенному интерфейсу или должны быть отлиты до их использования. –