2016-02-25 71 views
0

我正在做一個診所,我需要做一個對象,一次存儲兩種藥物。互動物件意味着MEDICATION_1與MEDICATION_2在EIFFEL中一次在數據結構中存儲兩個類

但是下面的代碼是不正確的,因爲相互作用不符合泛型參數

錯誤:VICG:實際泛型參數不符合約束。

代碼:

interaction: HASH_TABLE[MEDICATION, MEDICATION] 

回答

1

HASH_TABLE允許一種類型的目標與另一個對象相關聯(或相同的)類型。 HASH_TABLE的第一個參數是一個值,第二個參數是一個鍵。因此,對於相同的密鑰,最多可以保留一個值。如果這符合您的需求,密鑰的類型必須是HASHABLE。這種類型定義了一個函數hash_code,它計算一個對象的整數值。所有的基本類型和STRING都是HASHABLE,所以你可以依靠現有的實現來計算hash_codeMEDICATION對象。例如,如果藥物具有唯一的名稱,則定義如下:

class MEDICATION inherit HASHABLE ... feature ... 
    name: STRING 
    ... 
    hash_code: INTEGER 
     do 
     Result := name.hash_code 
     end 
end 
相關問題