![]() |
1
4
你想要的(2)确实是不可能的,因为它可能被误认为是带括号的表达式(见 http://www.adaic.org/resources/add_content/standards/12aarm/html/AA-4-3-3.html 注释10)。 如果您真的想避免表达式(3),出于您所说的原因,作为解决方法,您可以定义一个函数来处理一个元素数组的大小写:
它重用表达式(3),但第一个索引硬编码不再在调用站点上完成。 您还可以重载foo函数来处理特殊的单元素情况:
|
![]() |
2
5
简而言之,所有数组对象都必须被约束,这意味着调用方通常必须决定数组边界。 但是,您知道索引类型,并且可以
这并不能真正回答你的问题,因为有人可能仍然在摆弄数组范围,而且没有任何防范措施。 添加一个新的子类型作为范围可能是一个可行的解决方案,但是:
现在可以对string_array_range子类型进行任何修改,而不影响任何调用方。但是仍然不能保证邪恶的程序员改变数组本身的索引类型… |
![]() |
3
0
声明数组类型,但不提供大小。 记住数组有一个静态大小。 所以 字符串“array'first” 和 字符串数组范围 什么都不匹配。 如果你声明
然后 米亚尔第一 表示1和 米亚尔山脉 表示1…35。 只要您不在类型上放置约束,您就不能访问这些属性。 |
![]() |
LambdaBeta · Ada将记录数组传递给c函数 7 年前 |
![]() |
rid · 用于在数组中查找索引的表达式 7 年前 |
![]() |
CaesiumWhale · 在Ada标记类型中创建2D数组字段 7 年前 |
![]() |
SigGP · 如何运行用Ada编写的程序? 7 年前 |
![]() |
digitig · 数组总计的Spark Ada后置条件 8 年前 |
![]() |
Mate · “ADA.FLOAT_IO”不是预定义的库单元 8 年前 |