Ada中的派生类型和子类型

时间:2010-04-20 18:45:51

标签: types ada

有什么区别?

3 个答案:

答案 0 :(得分:8)

首先,术语:它是“Ada”,而不是“ADA” - 它以“Ada Lovelace”命名;它不是首字母缩略词。

子类型与其基类型兼容,因此您可以将基类型的操作数与基类型的操作数混合。例如:

subtype Week_Days is Integer range 1..7;

由于这是一个子类型,您可以(例如)将1添加到工作日以获得下一个工作日。

派生类型是一种完全独立的类型,具有与其基本类型相同的特征。您不能将派生类型的操作数与基类型的操作数混合。例如,如果您使用:

type Week_Day is new Integer range 1..7;

然后你能够在工作日添加一个整数来获得另一个工作日。要对派生类型进行操作,通常您自己定义这些操作(例如,创建包)。同时,派生类型会“继承”其基类型的所有操作(即使是一些可能没有意义的操作),因此您仍然可以添加。

答案 1 :(得分:2)

来自Wikibooks

给定类型的子类型将彼此兼容。

派生类型是从现有类型创建的新的完整类型。与任何其他类型一样,它与其父类不相容;但是,它继承了为父类型定义的基本操作。

答案 2 :(得分:1)

基本区别在于派生类型是不同类型。您不能只将一个分配给另一个,或者在表达式中一起使用它们。另一方面,子类型与其原始类型分配兼容。您可以一起使用它们,而无需输入任何类型的代码。

子类型的范围比基本类型的范围窄,因此可能会进行范围检查(我相信Constraint_Error可以从中进行检查)。所以你还是要小心。