栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

示例代码详细说明了Ada和Java在键入方面的区别

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

示例代码详细说明了Ada和Java在键入方面的区别

从Ada的角度来看,这可能会有所帮助。

类型声明有两种基本形式:新类型和子类型。

即使新类型具有相同的值范围,它也被视为与任何以前的类型完全不同的类型。只能将新类型的对象分配给新类型的变量,依此类推。

子类型是从现有类型派生的,共享其值的子集,就分配而言,它被视为实质上是同一类型。

使用类型系统的技巧需要一些实践,而这是在类型和子类型之间进行选择的一个重要方面。它使沮丧地打击类型系统与使程序简单而轻松地组合在一起之间有所区别。

  • 声明一个新类型,其值表示新的东西,不需要或不想与其他数量混合的东西。
  • 声明一个其值与现有事物相关的子类型。

一个示例:设想使建筑物自动化,包括其电梯系统:

type Floor is new Integer range -3 ..135;

有几个地下车库,一个地下室,0层是一楼(对于欧洲建筑而不是美国建筑!),其上方135层,使其比高耸的地狱高1层。

可以安全地将其作为一种新类型,因为几乎没有将Floor变量与其他变量混淆的危险,并且几乎不需要数学上将Floor与任何其他数量组合。升降机需要去那里,仅此而已。在这种情况下,将Floor作为新类型可以捕获一些错误,但是值得增加的安全性而不会带来痛苦。

使用类型或子类型作为数组索引和循环边界是一种使跨界访问变得不太可能的好方法。

Array(Floor) of ...for f in Floor loop ...

如果确实需要将整数变量分配给Floor,则类型转换会向编译器和任何阅读此代码的人发出信号。

subtype Population is Natural range 0 .. 10000;

我们必须知道出于安全,防火,供暖或制冷要求以及其他目的而要占用建筑物的人数。它的范围在两端都有严格的限制:对于此建筑物,假定有超过10000名居住者被消防安全法规所禁止。

基本类型是自然类型(本身是Integer的子类型),而不是Integer,因为总体永远不能小于零。

但是,将“人口”设置为新类型可能会导致无休止的类型转换问题。使其成为子类型,例如,可以更轻松地在“热负荷”计算,电梯调度策略,用水预测中使用“人口”。

它是子类型而不只是Integer的事实仍然提供了有用的保护形式。虽然可以将整数分配给种群变量并在表达式中与它们混合,但是任何试图超出范围的值都将被标记为错误。如果在编译时无法检测到它们,则它们将在运行时引发异常。第10001位试图进入建筑物的人也将如此。

我将让Java专家解释在Java中实现这些策略的最佳方法。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/515629.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号