在契约式设计中,类不变量必须在两种情况下满足:创建对象之后和调用例程之后。是否有任何示例或条件,我也必须在调用例程之前进行评估?
所以我才开始学习埃菲尔.我正在使用的书中的第一个练习之一就是创建一个基本^ exp而不使用^的函数.我在下面复制了我的代码.
class
    APPLICATION
inherit
    ARGUMENTS
create
    make
feature {NONE} -- Initialization
    make
            -- Run application.
        do
            create power(2;3)
            printf("2 to the power of 3 is " + answer)
        end
    power(base : REAL; exp : INTEGER) : REAL
        -- computers base raised to the bower of exp without using ^
        local
            remain : INTEGER
        do
            remain := exp
            if remain = 0 then
                result := 1
            else
                from
                until
                    remain = 0
                loop
                    result := result * result
                    remain := …我正在尝试使用下面的类中的异常,但是当我调用该kivetel方法时,程序总是失败。我认为它只会调用重试部分,而不是满足后置条件。但是它失败,并带有“ y_above_zero”后置违规。
class
KEYWORDS
create
    make
feature
    y:INTEGER
make
do
end
kivetel
do
ensure
    y__above_zero: y > 0
rescue
    y := 20
    retry
end
end