首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >合同中的变量声明

合同中的变量声明
EN

Stack Overflow用户
提问于 2014-05-18 16:11:38
回答 2查看 59关注 0票数 0

在D中可以在合同中定义变量吗?作为接口的成员,我有以下功能:

代码语言:javascript
复制
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); }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-20 14:46:46

这在D中是不可能的。您唯一的选择是使oldLength成为一个成员变量或静态类变量,或者是一个全局变量。虽然变量可以跨不同的测试块访问(尽管这是一个实现细节,并且没有保证),但对于契约来说并非如此。

票数 1
EN

Stack Overflow用户

发布于 2014-05-18 21:02:29

根据C语言的作用域规则,我认为在{} for " in“中声明"oldlength”将使它成为该作用域的本地范围,并且在活动范围中不可见。把声明移到合同之外有帮助吗?

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23724053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档