You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何示例中array'First始终返回1而非数组首个元素?

关于Ada数组'First属性的解惑

嘿,我完全懂你的困惑!这其实是Ada里数组属性设计的正常行为,咱们来捋清楚:

首先,你定义的数组类型:

type NodeArray is array (Positive range 1 .. 5) of XNode;

这里的'First属性(不管是针对数组类型NodeArray,还是某个具体的NodeArray实例),返回的始终是数组索引范围的起始整数值,也就是你定义里的1——这完全符合Ada的语言规范。

你之前误以为'First会返回数组的首个元素,其实这是对属性功能的误解。在Ada中,数组的这类边界属性('First、'Last、'Range等)都是用来描述索引范围的,而不是直接返回元素本身。

如果想要获取数组的首个元素,你需要结合索引来访问:
假设你有一个NodeArray的实例:

My_Nodes : NodeArray;

那么第一个元素可以这样获取:

My_Nodes(My_Nodes'First)

这样写的好处是,如果后续你修改了数组的索引范围(比如改成2..6),代码不需要手动调整索引值,直接用'First就能适配新的范围,更灵活通用。

总结一下:

  • array'First → 返回数组索引范围的起始整数
  • 获取首个元素 → 用array_instance(array_instance'First)

内容的提问来源于stack exchange,提问作者zython

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:19:49