Indexing Ada中整数到自定义类型的转换

Indexing Ada中整数到自定义类型的转换,indexing,types,integer,type-conversion,ada,Indexing,Types,Integer,Type Conversion,Ada,我有一个由某种类型的对象组成的数组,通过类型索引索引: type index is new Integer range 1..50; type table is new Array(index) of expression; 现在,我需要访问其中一个表达式,具体取决于用户通过键盘输入的内容。为此,我做了以下工作: c: Character; get(c); s: String := " "; s(1) := c; 最后,我可以将字符强制转换为类型Integer: i: Integer; i

我有一个由某种类型的对象组成的数组,通过类型
索引
索引:

type index is new Integer range 1..50;
type table is new Array(index) of expression;
现在,我需要访问其中一个表达式,具体取决于用户通过键盘输入的内容。为此,我做了以下工作:

c: Character;
get(c);

s: String := " ";
s(1) := c;
最后,我可以将字符强制转换为类型
Integer

i: Integer;
i := Integer'Value(s);
现在,我有了用户想要访问的值的位置,但是Ada不允许您访问
,因为它是由
索引
而不是
整数
索引的,它们是不同的类型

基于用户输入访问表达式的最佳解决方案是什么

type index is new Integer range 1..50;
type table is new Array(index) of expression;
的声明中,您不需要(也不能有)
new
关键字

c: Character;
get(c);

s: String := " ";
s(1) := c;
最后两行可以写成:

S: String := (1 => C);
(假设
C
可见,并在声明
S
的点处初始化)

这不是“演员阵容”。艾达没有石膏。这甚至不是类型转换。但我明白你的意思;如果
C='4'
,则
S=“4”
,且
整数值=4
。(您应该考虑如果
C
的值不是十进制数字,该怎么办;这将导致
Integer'value
产生
Constraint\u Error

现在,我有了用户想要访问的值的位置,但是 不允许您访问
,因为它由
索引
而不是不同类型的整数

简单:不要使用不同的类型:

I: Index := Index'Value(S);
的声明中,您不需要(也不能有)
new
关键字

c: Character;
get(c);

s: String := " ";
s(1) := c;
最后两行可以写成:

S: String := (1 => C);
(假设
C
可见,并在声明
S
的点处初始化)

这不是“演员阵容”。艾达没有石膏。这甚至不是类型转换。但我明白你的意思;如果
C='4'
,则
S=“4”
,且
整数值=4
。(您应该考虑如果
C
的值不是十进制数字,该怎么办;这将导致
Integer'value
产生
Constraint\u Error

现在,我有了用户想要访问的值的位置,但是 不允许您访问
,因为它由
索引
而不是不同类型的整数

简单:不要使用不同的类型:

I: Index := Index'Value(S);

您是在问如何进行类型转换吗?简单,
索引(i)
。但是,您可以将
字符
直接转换为
索引
索引的值
您可能希望
获取字符串而不是字符,因为将字符与此算法一起使用只能获取
的前9个元素。您想知道如何进行类型转换吗?简单,
索引(i)
。但是,您可以将
字符
直接转换为
索引
索引值
您可能希望
获取字符串而不是字符,因为将字符与此算法一起使用只能获取
的前9个元素。