在D中可以在合同中定义变量吗?作为接口的成员,我有以下功能:
public @safe nothrow void eat(in ulong chunklength)
in { assert(chunklength < length); ulong oldlength = length; } // lenght is a member variable
out { assert(length == oldlength - chunklength); }发布于 2014-05-20 14:46:46
这在D中是不可能的。您唯一的选择是使oldLength成为一个成员变量或静态类变量,或者是一个全局变量。虽然变量可以跨不同的测试块访问(尽管这是一个实现细节,并且没有保证),但对于契约来说并非如此。
发布于 2014-05-18 21:02:29
根据C语言的作用域规则,我认为在{} for " in“中声明"oldlength”将使它成为该作用域的本地范围,并且在活动范围中不可见。把声明移到合同之外有帮助吗?
https://stackoverflow.com/questions/23724053
复制相似问题