Eiffel:一种在另一个函数上调用前体重新定义的功能的方法

时间:2019-08-28 14:10:21

标签: eiffel

我正在寻找一种在其他功能上调用Precursor的方法。上下文是,我重新定义了一个例程,该例程调用另一个继承人的功能,该功能调用了我的继承人,并且我想显式地调用它。有没有办法像在Java Precursor.feature_a中那样做。

如果不是,我发现的唯一替代方法是编写一个feature_a_implementation并从重新定义的功能中调用它。是否有特定原因不采用这种机制?这样做的后果是将feature_a的合同定义为feature_afeature_a_implementation

的2倍

1 个答案:

答案 0 :(得分:2)

功能复制可用于此目的

class A feature
    f do print ("A") end
end

class B inherit
    A redefine f select f end
    A rename f as g end
feature
    f do print ("B") end
    h do g end
end

f的功能A在类B中出现两次:在名称f下(重新定义和选择的版本)和在名称g下(原始版本)。功能h调用g并按预期打印A