在Ada中重命名类型有什么意义

时间:2014-04-22 12:51:43

标签: types ada

在Ada,我经常看到这样的事情:

type Number is new Integer;

这有什么意义?你能不能对Integer感到满意? 我也见过如下代码:

type Small_Number is range 1..5;

这对我有意义;我明白为什么这会有用。但是,为什么你会选择使用前一个例子?

3 个答案:

答案 0 :(得分:11)

更常见的是我见过这样的代码:

Type Pounds  is new Integer;
Type Euros   is new Integer;
Type Dollars is new Integer;

这意味着您不会意外地将您的英镑兑换成欧元兑换美元。

如果你想在两者之间进行转换,你需要做一个明确的演员表,或者写一个转换例程,这两个程序都会考虑适用的汇率。

(现在我进一步思考,在这个例子中,Float会比Integer更好!)

答案 1 :(得分:6)

重点是Number类型,与Integer完全不同。

这意味着可以更好地控制参数,因为您无法使用需要Integer的{​​{1}};这有助于封装。

您希望保持这种控制水平并且可能计划将来NumberNumber完全不同,这是非常合理的。

答案 2 :(得分:1)

我同意

type Number is new Integer;

(这不是一种类型的“重命名”)看起来很糟糕,但可能有一个很好的理由。例如:

  • 您希望Number成为一种独特的类型,但与Integer的范围相同。
  • 您希望Number将数组类型的范围与Integer派生索引相匹配。