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

an *_*wig 2 types ada

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

type Number is new Integer;
Run Code Online (Sandbox Code Playgroud)

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

type Small_Number is range 1..5;
Run Code Online (Sandbox Code Playgroud)

这对我来说很有意义; 我明白为什么这会有用.但是,为什么,无论如何你会选择使用前一个例子?

NWS*_*NWS 11

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

Type Pounds  is new Integer;
Type Euros   is new Integer;
Type Dollars is new Integer;
Run Code Online (Sandbox Code Playgroud)

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

如果要在两者之间进行转换,则需要进行显式转换或编写转换例程,这两者都会考虑适用的汇率.

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

  • 和固定点可能比两者都好! (3认同)

pax*_*blo 6

关键是这Number是一种新的类型,与之完全不同Integer.

这意味着在参数更多的控制,例如,因为不能使用的Integer,其中一个Number是必需的; 这有助于封装.

你想要保持这种程度的控制并且可能计划未来,你可能最终Number完全不同于它,这是非常合理的Integer.