[英]Why is LINKED_SET unable to compare objects?
正如我想知道是否某些 object 進入LINKED_SET
以在我的上下文中對其進行修剪,我無法將其與 object 進行比較,而不是其參考。
changeable_comparison_criterion: BOOLEAN
-- May `object_comparison' be changed?
-- (Answer: only if set empty; otherwise insertions might
-- introduce duplicates, destroying the set property.)
do
Result := is_empty
ensure then
only_on_empty: Result = is_empty
end
進入 SET class (如上)似乎不可能將集合更改為compare_objects
。 所以我的問題是:
SET
進行比較的語義是什么LINKED_SET
語義的誤解而選擇了錯誤,我應該如何處理基於 object 比較的唯一項目集合,然后再次基於 object 比較來修剪項目比較標准應該在容器創建后立即設置,然后它可以正常工作。 如果集合中已經有一些對象,那么如果比較標准發生變化,應該對它們做什么就變得不清楚了。
例如,如果有一個集合 {A, B} 由兩個不同的對象 A 和 B 組成,它們具有相同的值,即相等,如果比較標准從compare_references
變為compare_objects
應該怎么辦? 顯然,該集合現在應該只有一個 object,因為根據新設置,它不能容納兩個或更多相等的對象。 這是否意味着,object A 應該被刪除而 B 應該被保留? 還是應該以相反的順序完成? 您所指的先決條件消除了這種歧義。
解決方法是在容器中有任何對象之前修改設置:
create my_set.make
my_set.compare_objects
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.