[英]Integer to custom type conversion in Ada
我有某種對象的數組,由類型index
:
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不允許您訪問table
,因為它是通過index
而不是Integer
索引的,這是不同的類型。
根據用戶輸入訪問表達式的最佳解決方案是什么?
type index is new Integer range 1..50;
type table is new Array(index) of expression;
在table
的聲明中,您不需要(也可以沒有) new
關鍵字。
c: Character;
get(c);
s: String := " ";
s(1) := c;
最后兩行可以寫成:
S: String := (1 => C);
(假設C
是可見的,並在聲明S
的位置進行了初始化)。
i: Integer;
i := Integer'Value(s);
這不是“廣播”。 Ada沒有演員表。 它甚至不是類型轉換。 但是我明白你的意思; 如果C = '4'
,則S = "4"
,並且Integer'Value(S) = 4
。 (您應該考慮如果C
的值不是十進制數字該怎么辦;這將導致Integer'Value(S)
引發Constraint_Error
。)
現在,我有了用戶要訪問的值的位置,但是Ada不允許您訪問
table
,因為它是通過index
而不是Integer
索引的,這是不同的類型。
簡單:不要使用其他類型:
I: Index := Index'Value(S);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.