diff --git a/contracts.rst b/contracts.rst index e82076d..0bbe0ff 100644 --- a/contracts.rst +++ b/contracts.rst @@ -336,10 +336,10 @@ Constant 状态变量 状态变量可以被声明为 ``constant``。在这种情况下,只能使用那些在编译时有确定值的表达式来给它们赋值。 任何通过访问 storage,区块链数据(例如 ``now``, ``this.balance`` 或者 ``block.number``)或执行数据( ``msg.gas`` ) 或对外部合约的调用来给它们赋值都是不允许的。 -在内存分配上有边界效应(side-effect)的表达式是允许的,但对其他内存对象产生边界效应的表达式则不行。 +在内存分配上有副作用(side-effect)的表达式是允许的,但对其他内存对象产生副作用的表达式则不行。 内建(built-in)函数 ``keccak256``,``sha256``,``ripemd160``,``ecrecover``,``addmod`` 和 ``mulmod`` 是允许的(即使他们确实会调用外部合约)。 -允许带有边界效应的内存分配器的原因是这将允许构建复杂的对象,比如查找表(lookup-table)。 +允许带有副作用的内存分配器的原因是这将允许构建复杂的对象,比如查找表(lookup-table)。 此功能尚未完全可用。 编译器不会为这些变量预留存储,它们的每次出现都会被替换为相应的常量表达式(这将可能被优化器计算为实际的某个值)。 @@ -1206,4 +1206,4 @@ Using For } 注意,所有库调用都是实际的 EVM 函数调用。这意味着如果传递内存或值类型,都将产生一个副本,即使是 ``self`` 变量。 -使用存储引用变量是唯一不会发生拷贝的情况。 \ No newline at end of file +使用存储引用变量是唯一不会发生拷贝的情况。