使用 EIFFEL 上的项目功能在 HASH_TABLE 中查找对象

Finding a object in a HASH_TABLE using item feature on EIFFEL

我在比较 HASH_TABLE

中的两个对象时遇到问题

PERSON 是一个 class,具有姓名、生日、关系状态、配偶姓名、配偶 ID 等属性。所以基本上由属性组成 代码:

list: HASH_TABLE[PERSON, INTEGER_64]

put(id1, id2: INTEGER_64)
local
   p1, p2: PERSON
do
   p1 := model.list.at(id)
      -- or 
   p1 := model.list.search(id)
   p1 := model.list.found_item -- same error as below
end

错误:赋值源与目标不兼容。

使用的功能 RETURN "DETACHABLE G"

我想我应该 "if attached" 确保项目特征 returns 正确的对象类型然后分配?不过我不太确定如何投射对象。

调用上述功能触发错误

我需要这些功能的原因是我可以更轻松地排序

特征return detachable G 因为有可能找不到元素。因此你需要使用对象测试,例如

if
   attached model.list [id1] as p1 and then
   attached model.list [id2] as p2
then
   ... -- use p1 and p2
end