我怎样才能找到阿达变量的数据类型?
例如,给定
INT : integer;
我怎么能打印“的数据类型是整数”这个变量?
在Python, type()
可以被用来找到的类型。 是否有任何类似的功能在阿达找到一个变量的数据类型?
我怎样才能找到阿达变量的数据类型?
例如,给定
INT : integer;
我怎么能打印“的数据类型是整数”这个变量?
在Python, type()
可以被用来找到的类型。 是否有任何类似的功能在阿达找到一个变量的数据类型?
艾达是一个强类型语言,当你声明一个变量指定其类型。 因此,有没有用一个函数返回变量的类型,因为将与无类型变量的语言。 该方案已经知道的类型。
如果变量X
与类型中声明T'Class
,则实际值的类型可以是T
或衍生自任何类型T
。 在这种情况下,你可以使用X'Tag
来获取值的实际类型,这是你可以来得到实际类型最接近的标签 。 一旦你有一个标签,你可以不喜欢的东西越来越类型的名称(有功能这Ada.Tags
),比较它与某种类型的标签,看它是否是这种类型的,等等,但Integer
是不是一个标记类型,所以你不能使用'Tag
上,并会有用不到它。
如果声明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;
但是,这取决于你如何实现一个类型检查你是否有动态类型系统或静态的。