generics - 没有泛型,静态类型语言如何处理?

标签 generics language-design static-typing

我很好奇哪些静态类型语言没有泛型支持
(以及在较小程度上哪些语言历史上没有泛型),以及它们如何处理它。

用户是否只是四处 throw ?是否有一些特殊的基础集合(如列表和字典)允许这些类型是通用的?

为什么这些语言没有泛型?是为了避免潜在的复杂性还是其他原因?

最佳答案

C——和历史上的 C++,在它被称为 C++ 之前——要求您手动将“泛型”类型扩展为非泛型(即 C 预处理器宏等效于 C++ 模板)或转义类型系统(即空指针)。

但是,数组(列表)被视为复合类型而不是单一类型。例如,您可以拥有一个短裤数组,但不能将其视为字符数组甚至是 long 数组。

这在 C 中并不是一个真正的大问题,尽管有时不方便。放在上下文中,它确实代表了 40 年前的权衡。

关于generics - 没有泛型,静态类型语言如何处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3880465/

相关文章:

c++ - vector 复制值

java - 仅允许 null 选择加入

c++ - 异常表达式创建的异常对象的类型

java - `instanceof` 是否产生静态类型限定符?

java - 泛型 - 函数返回类型与参数类型相同?

java - 在java中使用类型参数进行转换

typescript 参数相互依赖

java - "? extends E"和 "T extends E"有什么区别?

parsing - 什么语法糖或语言特性使语言难以/难以解析?

c++ - 在子类型上调用函数是如何实现的?