【发布时间】:2014-01-25 07:02:34
【问题描述】:
我正在阅读this book,它是关于静态类型的,在阅读了一些章节之后,我理解为:
- OOP 中的静态类型被定义为明确声明对象是其实例的类,因此它是预先确定的(在编译时,在运行时之前,即
Foo var)。 - 与此相反的是泛型编程,其中对象的实际 ID 尚未确定(即
id var)。 - 要记住的是,静态类型从来都不是必需的(直接来自书本),它只会提高可读性,并通过显示对象可以做什么和不能做什么以及它可以“看到”什么来简化调试过程。
- 然而,对于数组之类的东西,您可能需要泛型编程有时是必需的……这就是我感到困惑的地方。它真的有必要吗?
我知道在 Java 中,您可以强制包含在数组中的对象类型,例如:ArrayList<Double>,但在 Objective-C 中,我对此进行的研究很少,因此没有这样的方法,因此,所有NSArrays 在编译时都包含ids。
如果这个特性(奇怪地称为泛型,尽管它是静态类型而不是泛型类型)在 Objective-C 中不可用,这是否意味着有时需要泛型编程?
【问题讨论】:
-
不要想知道什么时候泛型是必要的,而是想想它们什么时候有用。为什么有它们?你总是可以用另一种方式来做,当然有理由将它们包含在(例如)Java中。就个人而言,我记得有一个案例,我在 C 中有一个
void *数组,试图弄清楚如何处理这些元素是一件很有趣的事情。用 Java 制作通用数据结构可以很容易地获得一个通用的解决方案,它也是类型安全的。 -
从技术上讲,几乎没有任何语言特性是必需的。图灵机没有泛型。 :) 从长远来看,它们只会让生活更轻松。
-
这是如何基于意见的?这是一个技术问题,有是或否的答案!
标签: java objective-c generics type-safety static-typing