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个元素。