簡體   English   中英

Ada中的整數到自定義類型轉換

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM