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 に答える