在 EIFFEL 中一次将两个 类 存储在数据结构中
storing two classes in a data stucture at once in EIFFEL
我正在制作一家诊所,我需要制作一个可以同时储存两种药物的物品。交互对象意味着 MEDICATION_1 正在与 MEDICATION_2
交互
但是下面的代码是不正确的,因为它不符合泛型参数
错误:VICG:实际泛型参数不符合约束条件。
代码:
interaction: HASH_TABLE[MEDICATION, MEDICATION]
HASH_TABLE
允许将一种类型的对象与另一种(或相同)类型的对象相关联。 HASH_TABLE
的第一个参数是一个值,第二个参数是一个键。因此,同一个键最多只能保留一个值。如果这符合您的需要,键的类型必须是 HASHABLE
。此类型定义了一个函数 hash_code
来计算对象的整数值。所有基本类型和 STRING
都是 HASHABLE
,因此您可以依靠现有的实现来为 MEDICATION
对象计算 hash_code
。例如,如果一种药物有一个唯一的名称,定义如下是有意义的:
class MEDICATION inherit HASHABLE ... feature ...
name: STRING
...
hash_code: INTEGER
do
Result := name.hash_code
end
end
我正在制作一家诊所,我需要制作一个可以同时储存两种药物的物品。交互对象意味着 MEDICATION_1 正在与 MEDICATION_2
交互但是下面的代码是不正确的,因为它不符合泛型参数
错误:VICG:实际泛型参数不符合约束条件。
代码:
interaction: HASH_TABLE[MEDICATION, MEDICATION]
HASH_TABLE
允许将一种类型的对象与另一种(或相同)类型的对象相关联。 HASH_TABLE
的第一个参数是一个值,第二个参数是一个键。因此,同一个键最多只能保留一个值。如果这符合您的需要,键的类型必须是 HASHABLE
。此类型定义了一个函数 hash_code
来计算对象的整数值。所有基本类型和 STRING
都是 HASHABLE
,因此您可以依靠现有的实现来为 MEDICATION
对象计算 hash_code
。例如,如果一种药物有一个唯一的名称,定义如下是有意义的:
class MEDICATION inherit HASHABLE ... feature ...
name: STRING
...
hash_code: INTEGER
do
Result := name.hash_code
end
end