如何在Ada中找到变量的数据类型?
例如,给定
INT : integer;
如何为此变量打印“数据类型为整数”?
在Python中,type()
可用于查找类型。 Ada中是否有类似的函数来查找变量的数据类型?
答案 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;
但是,您可以自行决定如何使用动态类型系统或静态来执行类型检查。