1

如果 Visual Basic 使用结构或名称类型等价(或两者),只是很难理解。

4

1 回答 1

4

Visual Basic 是主名(“按名称”)类型- 而不是 结构类型

虽然 VB.NET 通过"Strict Off"支持“延迟调度”或动态类型,但这与底层 (CLR) 类型系统无关。此外,“Infer On”也是一个正交结构,因为编译器仍然“按名称”计算类型。

基本上:如果需要一个类型名称来实现静态类型(例如“类型等效”),那么它就是一种主格类型语言。


甚至像 Ruby/Python 这样的语言也是主格类型的。然而,因为它们也是完全动态类型的,并且经常避免显式类型检查,所以通常认为其中的类型是“结构使用的”。也就是说,如果它像鸭子一样嘎嘎叫……

支持结构类型的语言的一个例子是 Scala。考虑这个小例子,其中 A 和 B 是独立类型(它们不共享接口或相关超类型),但它们可以围绕它们的结构统一(别名为 T):

case class A { def hi = "A" }
case class B { def hi = "B" }

// structure declaration: aliased, but "nameless"
type T = { def hi: String }  
// both A and B can be "used as" the structure declared
def sayHi (it: T) = println(it.hi)

sayHi(A())
sayHi(B())
于 2013-09-18T00:25:29.440 回答