ada中变量的数据类型
Datatype of variable in ada
如何在 Ada 中找到变量的数据类型?
例如给定
INT : integer;
如何为这个变量打印 "the datatype is integer"?
在Python中,type()
可以用来查找类型。 Ada 中有没有类似的函数来查找变量的数据类型?
Ada 是一种强类型语言,当你声明一个变量时,你就指定了它的类型。因此,return 变量类型的函数没有用处,就像在具有无类型变量的语言中那样。程序已经知道类型。
如果变量 X
声明为类型 T'Class
,则实际值的类型可以是 T
或从 T
派生的任何类型。在这种情况下,您可以使用 X'Tag
来获取值实际类型的 tag,这是您可以获得的最接近实际类型的值。一旦你有了一个标签,你就可以做一些事情,比如获取类型的名称(在 Ada.Tags
中有这方面的功能),将它与某种类型的标签进行比较以查看它是否是那种类型等等。但是 Integer
不是标记类型,因此您不能在其上使用 'Tag
并且没有任何用处。
如果您将 INT
声明为 Integer,它将始终是该范围内的 Integer。
所以你可以做一个像这样的函数:
function the_type(I : Integer) return String is ("Integer");
如果变量 INT
总是 Integer.[=15=,我想不出你想要检查变量类型的原因]
另一方面,如果 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;
但是,无论您使用的是动态类型系统还是静态类型系统,都取决于您如何实施类型检查。
如何在 Ada 中找到变量的数据类型?
例如给定
INT : integer;
如何为这个变量打印 "the datatype is integer"?
在Python中,type()
可以用来查找类型。 Ada 中有没有类似的函数来查找变量的数据类型?
Ada 是一种强类型语言,当你声明一个变量时,你就指定了它的类型。因此,return 变量类型的函数没有用处,就像在具有无类型变量的语言中那样。程序已经知道类型。
如果变量 X
声明为类型 T'Class
,则实际值的类型可以是 T
或从 T
派生的任何类型。在这种情况下,您可以使用 X'Tag
来获取值实际类型的 tag,这是您可以获得的最接近实际类型的值。一旦你有了一个标签,你就可以做一些事情,比如获取类型的名称(在 Ada.Tags
中有这方面的功能),将它与某种类型的标签进行比较以查看它是否是那种类型等等。但是 Integer
不是标记类型,因此您不能在其上使用 'Tag
并且没有任何用处。
如果您将 INT
声明为 Integer,它将始终是该范围内的 Integer。
所以你可以做一个像这样的函数:
function the_type(I : Integer) return String is ("Integer");
如果变量 INT
总是 Integer.[=15=,我想不出你想要检查变量类型的原因]
另一方面,如果 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;
但是,无论您使用的是动态类型系统还是静态类型系统,都取决于您如何实施类型检查。