0

Oberon-2 语言报告“The Programming Language Oberon-2”在附录 A 中有以下定义:

两个类型为T aT b的变量ab属于同一类型,如果

  1. T aT b都由相同的类型标识符表示,或
  2. 在T a = T b形式的类型声明中,T a被声明为等于T b,或者
  3. ab出现在变量、记录字段或形式参数声明的同一标识符列表中,并且不是开放数组。

给定类型声明

Ta = INTEGER
Tb = INTEGER
Tc = Tb

上述定义中的第二段表明

  • TaTb是不同的类型(没有声明Ta = Tb),
  • TaTc是不同的类型(没有声明Ta = Tc)并且
  • Tc和 INTEGER 是不同的类型(没有声明Tc = INTEGER)。

这是对Oberon-2中相同类型的正确解释吗?据我了解,Oberon-2 在名称等效性方面非常严格,在这种情况下,这种解释实际上是有道理的。标准帕斯卡和 ISO Modula-2 怎么样?

4

1 回答 1

2

问题中相同类型的解释遵循所谓的严格名称等效。例如,在 Ada 中,这个特性是通过派生类型来支持的。在严格的名称等效下,每个类型声明都引入了不同的类型。然而,Pascal、Modula-2 和 Oberon 都使用非严格名称等价。这意味着对于类型标识符T a,声明T b = T aT c = T a使T bT c等效。

于 2017-10-11T08:38:15.497 回答