使用 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
我在比较 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