为何示例中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
相关产品推荐
相关产品推荐

