在ADA变量的数据类型(Datatype of variable in ada)

2019-10-22 11:17发布

我怎样才能找到阿达变量的数据类型?

例如,给定

INT : integer;

我怎么能打印“的数据类型是整数”这个变量?

在Python, type()可以被用来找到的类型。 是否有任何类似的功能在阿达找到一个变量的数据类型?

Answer 1:

艾达是一个强类型语言,当你声明一个变量指定其类型。 因此,有没有用一个函数返回变量的类型,因为将与无类型变量的语言。 该方案已经知道的类型。

如果变量X与类型中声明T'Class ,则实际值的类型可以是T或衍生自任何类型T 。 在这种情况下,你可以使用X'Tag来获取值的实际类型,这是你可以来得到实际类型最接近的标签 。 一旦你有一个标签,你可以不喜欢的东西越来越类型的名称(有功能这Ada.Tags ),比较它与某种类型的标签,看它是否是这种类型的,等等,但Integer是不是一个标记类型,所以你不能使用'Tag上,并会有用不到它。



Answer 2:

如果声明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;

但是,这取决于你如何实现一个类型检查你是否有动态类型系统或静态的。



文章来源: Datatype of variable in ada
标签: ada