ada中变量的数据类型

时间:2015-04-02 05:32:00

标签: ada

如何在Ada中找到变量的数据类型?

例如,给定

INT : integer;

如何为此变量打印“数据类型为整数”?

在Python中,type()可用于查找类型。 Ada中是否有类似的函数来查找变量的数据类型?

2 个答案:

答案 0 :(得分:5)

Ada是一种强类型语言,当您声明变量时,请指定其类型。因此,函数返回变量的类型是没有用的,就像在具有无类型变量的语言中一样。该程序已经知道了类型。

如果使用类型X声明变量T'Class,则实际值的类型可以是T或从T派生的任何类型。在这种情况下,您可以使用X'Tag获取值的实际类型的标记,这是获得实际类型的最接近的值。获得标记后,您可以执行以下操作:获取类型名称(Ada.Tags中有相应的功能),将其与某种类型的标记进行比较,看看它是否属于类型等,但Integer不是标记类型,因此您无法在其上使用'Tag,也不会使用它。

答案 1 :(得分:0)

如果您将INT声明为整数,则该范围内的整数始终为整数。 所以你可以做一个像这样的函数:

function the_type(I : Integer) return String is ("Integer");

我想不出你想要检查变量类型INT的原因,如果它总是整数

另一方面,如果INT可以在运行时更改类型,则需要使用代码来模拟:

procedure Main is
    type Memory_Type_Enum is (Integer_Type, Float_Type);

    record Variable
        Memory_Location : Address;
        Memory_Type : Memory_Type_Enum;
    end record;

    INT : Variable;
begin
    INT := Allocate_Variable(Float_Type);
    INT := Allocate_Variable(Integer_Type);
    Put_Line(INT.Memory_Type'Img);
end;

但是,您可以自行决定如何使用动态类型系统或静态来执行类型检查。