如何检查以查看Ada中是否存在数组元素。 Ada还有任何好的文档站点,如python或php的文档站点,因此我可以搜索所有类型的函数及其用途。我无法在谷歌中找到更多关于Ada中某些类型功能的信息。
soldiers : array (0..max_number_of_soldiers - 1) of soldier_type;
procedure Next (Index: in out Integer; Interval: Positive) is
begin
for I in 1..Interval loop
loop
Index := (Index + 1) mod Number_Of_Soldiers;
exit when Soldiers(Index).Alive;
end loop;
end loop;
end Next;
什么是士兵(指数)。活动显示?什么是.alive?
答案 0 :(得分:2)
“什么是士兵(索引)。活着表示什么是.alive?”
缺少soldier_type
的确切类型定义,但显然它有一个(布尔)alive
字段。
有一群max_number_of_soldiers
士兵。这段代码遍历数组,并在找到一个活着的士兵时退出。
从索引Index
开始,循环遍历Interval
个项目。如果它到达结尾,它将在数组的开头包装并开始。
所以,回答你的问题,士兵(指数).Alive会返回index
的焊料是否存活。
答案 1 :(得分:1)
Ada中的数组可以用编码器所需的任何边界声明,甚至可以通过调用例程(也许在运行时从用户那里读出适当的大小)来声明。编码器可以使用'first
,'last
和'length
等属性重新检索边界。按照惯例,Ada中的数组通常不使用终结符的sentinal值。
这一切加起来通常假设Ada数组中的每个元素都包含有效值。如果有一些原因可能并非总是如此,那么编码员有责任提出一个方案来跟踪哪些元素具有良好的价值。
对于您提供的代码,看起来假设该数组中的每个元素都具有有效值soldier_type
,这显然是一个具有名为Alive
的布尔字段的记录类型。除了他用它来终止他的循环这一事实,我没有太多可以告诉你的事情。
好吧,我想我可以告诉你,如果整个数组中的记录都没有设置Alive
标志,那么你就有了一个无限循环。那可能不是你想要发生的事情。另外,如果是我,我会让数组从1..max_number_of_soldiers开始,只是因为它读得更好。还有更多的代码处理该数组,当它从0开始时看起来更好,或者有人是C编码器,并且在放弃旧习惯方面遇到了麻烦。
对于文档,我建议查看Ada tag's wiki中列出的网站。如果您对语言定义的函数以及诸如此类的东西特别感兴趣,那么您应该知道整个language reference manual可以在线获得(与我可以命名的许多其他语言不同)。我强烈建议查看附件A(预定义语言环境),K(语言定义属性)和L(语言定义编译语)。特别是K应该被彻底阅读。