В Eiffel при сравнении объектов расширенного типа оператор =
сравнивает их поле за полем, проверяя, идентично ли содержимое каждого поля в обоих объектах.
Давайте представим два расширенных класса без определенных в них функций:
expanded class A
end
expanded class B
end
Как Эйфель может отличить их друг от друга? Или не может? Это связано с некоторыми полями, унаследованными от ANY
?
both_are_equal: BOOLEAN
local
a: expanded A
b: expanded B
do
Result := a = b
end