【问题标题】:Eiffel: Unknown identifier on attached check into require statement埃菲尔:附加检查到要求语句中的未知标识符
【发布时间】:2018-10-12 16:38:20
【问题描述】:
    require
        valid_item: attached item as l_i and then l_i.valid_for_insert or l_i.valid_for_update

为什么我这里的 l_i 有一个未知的标识符??!!!

【问题讨论】:

    标签: design-by-contract eiffel void-safety


    【解决方案1】:

    试试

    valid_item: attached item as l_i and then (l_i.valid_for_insert or l_i.valid_for_update)
    

    注意你也可以这样做

    item_set: attached item as l_i 
    valid_item: l_i.valid_for_insert or l_i.valid_for_update
    

    您可以重用先前前提条件中的对象测试局部变量l_i

    【讨论】:

    • 非常好的答案!你能解释一下为什么吗?不带括号的求值优先级是什么?
    • a and then b or c (a and then b) or c - andand then 行为相同。 and then 用于确保仅当“左”操作数为 True 时才计算“右”操作数。它也用于 Void 安全,因为通常正确的操作数必须应用于非 Void 对象。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-08
    • 2018-12-11
    相关资源
    最近更新 更多