【发布时间】:2016-04-05 21:44:24
【问题描述】:
阅读以下内容:
很多人对静态类型和动态类型的定义是尊重的 到检查变量类型的点。使用这个 类比,静态类型语言是那些类型检查是 在编译时完成,而动态类型语言是在 哪种类型检查在运行时进行。
这个类比导致了我们上面用来定义静态和 动态类型。我相信理解静态和 根据需要显式声明的动态类型 变量,而不是编译时和运行时类型检查。
我在想我们定义静态和动态类型的两种方式:编译时检查和显式类型声明有点像苹果和橘子。所有静态类型语言的一个特征(据我所知)是引用变量具有定义的类型。是否有一种语言既具有编译时检查的优点(如 Java),又能够使变量不受特定类型的限制(如 Python)?
注意:在像 Java 这样的语言中并不完全是类型推断,因为变量仍然被分配了一个类型,只是隐式的。这种理论语言没有引用类型,所以不会有强制转换。由于混淆,我试图避免使用“静态类型”与“动态类型”。
【问题讨论】:
-
那篇文章不太好。尤其是作者把“声明”、“定义”和“初始化”混为一谈,弄得大部分都是错的。
-
是的,你是对的。它只是引发了一个问题:是否有一种语言结合了 Python 的动态类型的思想,但也像 Java 一样提供编译时检查的好处?
-
给您的问题:您如何使该语言的两个“部分”相互作用? “类型化”部分如何处理非类型化值?
-
@Mat - 它就像 Python,但在编译时进行检查。我的问题是这可能吗?
-
如果值的类型是在运行时确定的,如何在编译时进行类型检查?您无法验证您没有的信息。