重命名類型在阿達點,我常見的是這樣的:什麼是艾達
type Number is new Integer;
這樣做有什麼意義呢?你難道不滿意Integer
? 我也看過如下代碼:
type Small_Number is range 1..5;
這對我有意義;我明白爲什麼這會有用。但爲什麼,無論如何你會選擇使用前一個例子?
重命名類型在阿達點,我常見的是這樣的:什麼是艾達
type Number is new Integer;
這樣做有什麼意義呢?你難道不滿意Integer
? 我也看過如下代碼:
type Small_Number is range 1..5;
這對我有意義;我明白爲什麼這會有用。但爲什麼,無論如何你會選擇使用前一個例子?
這樣更常見的是我所看到的代碼:
Type Pounds is new Integer;
Type Euros is new Integer;
Type Dollars is new Integer;
這意味着你不會被意外的磅分配到歐元,美元。
如果你想在兩者之間進行轉換,你需要做一個明確的轉換,或者寫一個轉換例程,兩者都會考慮適用的匯率。
(現在我想想此外,浮動會比整數更好地爲這個例子!)
和定點可能比兩者都好! –
十進制定點,即.... – ajb
關鍵是Number
是新類型,與Integer
完全不同。
這意味着更多的參數控制,因爲你不能使用Integer
,其中Number
是必需的;這有助於封裝。
你想保持這個級別的控制,也許爲將來的計劃做好準備Number
完全不同於Integer
。
我同意
type Number is new Integer;
(這是不是一個「重命名」一類的)看起來像不好的風格,但可能有一個完美的理由。例如:
Number
是一個不同的類型,但範圍與Integer
相同。Number
將數組類型的範圍與Integer
派生索引匹配。
只是爲了清楚術語:Ada有一個'renames'關鍵字用於重命名事物(雖然它不能用於類型;推薦的方法是使用'子類型')。這給了一個新的名字,但不創建一個新的變量或類型或其他。你在這裏描述的是派生類型*,它與重命名完全不同。 – ajb