0
我正在做一個診所,我需要做一個對象,一次存儲兩種藥物。互動物件意味着MEDICATION_1與MEDICATION_2在EIFFEL中一次在數據結構中存儲兩個類
但是下面的代碼是不正確的,因爲相互作用不符合泛型參數
錯誤:VICG:實際泛型參數不符合約束。
代碼:
interaction: HASH_TABLE[MEDICATION, MEDICATION]
我正在做一個診所,我需要做一個對象,一次存儲兩種藥物。互動物件意味着MEDICATION_1與MEDICATION_2在EIFFEL中一次在數據結構中存儲兩個類
但是下面的代碼是不正確的,因爲相互作用不符合泛型參數
錯誤:VICG:實際泛型參數不符合約束。
代碼:
interaction: HASH_TABLE[MEDICATION, MEDICATION]
HASH_TABLE
允許一種類型的目標與另一個對象相關聯(或相同的)類型。 HASH_TABLE
的第一個參數是一個值,第二個參數是一個鍵。因此,對於相同的密鑰,最多可以保留一個值。如果這符合您的需求,密鑰的類型必須是HASHABLE
。這種類型定義了一個函數hash_code
,它計算一個對象的整數值。所有的基本類型和STRING
都是HASHABLE
,所以你可以依靠現有的實現來計算hash_code
的MEDICATION
對象。例如,如果藥物具有唯一的名稱,則定義如下:
class MEDICATION inherit HASHABLE ... feature ...
name: STRING
...
hash_code: INTEGER
do
Result := name.hash_code
end
end