Types 在Ada中不指定范围而创建子类型有什么意义?
在Ada中,我经常看到这样的情况:Types 在Ada中不指定范围而创建子类型有什么意义?,types,ada,Types,Ada,在Ada中,我经常看到这样的情况: type Number is new Integer; Type Pounds is new Integer; Type Euros is new Integer; Type Dollars is new Integer; 这有什么意义?你就不能对一个整数感到满意吗? 我也看到过这样的代码: type Small_Number is range 1..5; 这对我来说很有意义;我明白为什么这会有用。但是为什么您会选择使用前一个示例呢?关键是数字是一
type Number is new Integer;
Type Pounds is new Integer;
Type Euros is new Integer;
Type Dollars is new Integer;
这有什么意义?你就不能对一个整数感到满意吗?
我也看到过这样的代码:
type Small_Number is range 1..5;
这对我来说很有意义;我明白为什么这会有用。但是为什么您会选择使用前一个示例呢?关键是数字
是一种新类型,与整数
截然不同
这意味着对参数等进行更多的控制,因为在需要数字的情况下,不能使用整数
;这有助于封装
很有可能,你希望保持这种控制水平,并可能为将来做计划,最终你可能会发现Number
与Integer
完全不同。关键是Number
是一种新类型,与Integer
截然不同
这意味着对参数等进行更多的控制,因为在需要数字的情况下,不能使用整数
;这有助于封装
很有可能,您希望保持这种级别的控制,并可能为将来做计划,最终可能会发现Number
与Integer
完全不同。更常见的情况是,我看到这样的代码:
type Number is new Integer;
Type Pounds is new Integer;
Type Euros is new Integer;
Type Dollars is new Integer;
这意味着你不会意外地把英镑从欧元变成美元
如果要在两者之间转换,则需要执行显式转换,或编写转换例程,这两个例程都将考虑适用的汇率
(现在我进一步思考,对于这个例子来说,Float会比Integer更好!)我经常看到这样的代码:
type Number is new Integer;
Type Pounds is new Integer;
Type Euros is new Integer;
Type Dollars is new Integer;
这意味着你不会意外地把英镑从欧元变成美元
如果要在两者之间转换,则需要执行显式转换,或编写转换例程,这两个例程都将考虑适用的汇率
(现在我进一步考虑,在这个例子中,Float比Integer更好!)我同意这一点
type Number is new Integer;
(这不是类型的“重命名”)看起来很糟糕,但可能有一个很好的理由。例如:
- 您希望
Number
是一个不同的类型,但范围与Integer
相同
- 您希望
Number
将数组类型的范围与Integer
派生索引相匹配
我同意
type Number is new Integer;
(这不是类型的“重命名”)看起来很糟糕,但可能有一个很好的理由。例如:
- 您希望
Number
是一个不同的类型,但范围与Integer
相同
- 您希望
Number
将数组类型的范围与Integer
派生索引相匹配
只是为了明确术语:Ada有一个重命名
关键字,用于重命名内容(尽管它不能用于类型;建议使用子类型
)。这给某些东西起了一个新名字,但并没有创建一个新的变量或类型。您在这里描述的是一个派生类型,它与重命名完全不同。只是为了清楚术语:Ada有一个rename
关键字,用于重命名内容(尽管它不能用于类型;建议使用子类型
)。这给某些东西起了一个新名字,但并没有创建一个新的变量或类型。您在这里描述的是一种派生类型,它与重命名完全不同。浮点数中的二进制数表示形式经常与为十进制数定义的会计规则相冲突。使用二进制浮点数偶尔会使仙(dis)出现在稀薄的空气中。这里的选择类型是固定十进制数,例如4位十进制数字。浮点数中的二进制数表示形式通常与为十进制数定义的会计规则相冲突。使用二进制浮点数偶尔会使仙(dis)出现在稀薄的空气中。这里的选择类型是固定小数,例如4位小数。