我有一个后置条件的功能如下:
checkValue (k: K): detachable V
do
...
end
ensure
some_post_condition:
checkKey (Result)
这是" checkKey"的原型:
checkKey (v: V): BOOLEAN
因为"结果"是"可拆卸的V"的类型,我尝试将其作为参数传递给" checkKey"只接受" V"但不是"可拆卸的V",因此它无法编译。
以下是编译错误:
Argument name: v
Argument position: 1
Formal argument type: Generic #1
Actual argument type: detachable Generic #1
如何将可拆卸通用转换为通用?
答案 0 :(得分:1)
有几种选择:
checkValue
的类型从detachable V
更改为V
。checkKey
的参数类型从V
更改为detachable V
。将后置条件更改为
如果始终附加Result
result_attached: attached Result
some_post_condition: checkKey (Result)
如果Result
可以拆卸(在这种情况下它被视为有效):
some_post_condition: attached Result implies checkKey (Result)