2014-04-22 24 views
1

重命名類型在阿達點,我常見的是這樣的:什麼是艾達

type Number is new Integer; 

這樣做有什麼意義呢?你難道不滿意Integer? 我也看過如下代碼:

type Small_Number is range 1..5; 

這對我有意義;我明白爲什麼這會有用。但爲什麼,無論如何你會選擇使用前一個例子?

+4

只是爲了清楚術語:Ada有一個'renames'關鍵字用於重命名事物(雖然它不能用於類型;推薦的方法是使用'子類型')。這給了一個新的名字,但不創建一個新的變量或類型或其他。你在這裏描述的是派生類型*,它與重命名完全不同。 – ajb

回答

10

這樣更常見的是我所看到的代碼:

Type Pounds is new Integer; 
Type Euros is new Integer; 
Type Dollars is new Integer; 

這意味着你不會被意外的磅分配到歐元,美元。

如果你想在兩者之間進行轉換,你需要做一個明確的轉換,或者寫一個轉換例程,兩者都會考慮適用的匯率。

(現在我想想此外,浮動會比整數更好地爲這個例子!)

+2

和定點可能比兩者都好! –

+2

十進制定點,即.... – ajb

5

關鍵是Number類型,與Integer完全不同。

這意味着更多的參數控制,因爲你不能使用Integer,其中Number是必需的;這有助於封裝。

你想保持這個級別的控制,也許爲將來的計劃做好準備Number完全不同於Integer

1

我同意

type Number is new Integer; 

(這是不是一個「重命名」一類的)看起來像不好的風格,但可能有一個完美的理由。例如:

  • 你想要Number是一個不同的類型,但範圍與Integer相同。
  • 您想要Number將數組類型的範圍與Integer派生索引匹配。