在EIFFEL中一次在数据结构中存储两个类

时间:2016-02-25 22:18:48

标签: eiffel

我正在建立诊所,我需要制作一个可以同时储存两种药物的物品。交互对象表示MEDICATION_1正在与MEDICATION_2进行交互

但是,以下代码不正确,因为它不符合通用参数

错误:VICG:实际通用参数不符合约束。

代码:

interaction: HASH_TABLE[MEDICATION, MEDICATION] 

1 个答案:

答案 0 :(得分:1)

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