【发布时间】:2016-02-25 22:18:48
【问题描述】:
我正在制作一个诊所,我需要制作一个同时存储两种药物的对象。交互对象表示 MEDICATION_1 正在与 MEDICATION_2 交互
但是下面的代码是不正确的,因为它不符合泛型参数
错误:VICG:实际泛型参数不符合约束。
代码:
interaction: HASH_TABLE[MEDICATION, MEDICATION]
【问题讨论】:
标签: eiffel
我正在制作一个诊所,我需要制作一个同时存储两种药物的对象。交互对象表示 MEDICATION_1 正在与 MEDICATION_2 交互
但是下面的代码是不正确的,因为它不符合泛型参数
错误:VICG:实际泛型参数不符合约束。
代码:
interaction: HASH_TABLE[MEDICATION, MEDICATION]
【问题讨论】:
标签: eiffel
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
【讨论】: