在Ada,我经常看到这样的事情:
type Number is new Integer;
这有什么意义?你能不能对Integer
感到满意?
我也见过如下代码:
type Small_Number is range 1..5;
这对我有意义;我明白为什么这会有用。但是,为什么你会选择使用前一个例子?
答案 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}};这有助于封装。
您希望保持这种控制水平并且可能计划将来Number
与Number
完全不同,这是非常合理的。
答案 2 :(得分:1)
我同意
type Number is new Integer;
(这不是一种类型的“重命名”)看起来很糟糕,但可能有一个很好的理由。例如:
Number
成为一种独特的类型,但与Integer
的范围相同。Number
将数组类型的范围与Integer
派生索引相匹配。