【发布时间】:2014-02-11 05:50:36
【问题描述】:
我目前正在实现一个基于二叉树的数据结构。作为其中的一部分,我有(目前是公开的,以便于测试)实例变量left 和right 作为用于创建我的结构的每个Node 对象的一部分。我希望能够快速访问的其中一件事是 sub,这是使用此功能完成的:
@property Node sub()
in {
assert(!isLeaf);
}
body {
return (val != left.val) ? left : right;
}
这里所指的所有内容都是公开的。现在,我尝试在合约中使用这个属性函数(特别是out 块,函数绑定到result 的结果)。但是,当我这样做时,编译器抱怨说我正在使用 const result 对象调用可变方法。但是,当我将 sub 的签名更改为 @property const Node sub() 时,我得到了这个编译器错误:
Error: cannot implicitly convert expression (this.val != this.left.val ? this.left : this.right) of type const(Node) to tournament2.Node
我在这里缺少什么?我该如何解决这个问题?
【问题讨论】:
-
尝试将签名更改为
@property inout(Node) sub() inout。 -
@CyberShadow:解决了,谢谢!你能向我描述一下为什么这行得通吗?我想了解我的问题的根源,这样我以后就不会绊倒了。
标签: properties constants d