Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions contracts.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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)。
此功能尚未完全可用。

编译器不会为这些变量预留存储,它们的每次出现都会被替换为相应的常量表达式(这将可能被优化器计算为实际的某个值)。
Expand Down Expand Up @@ -1206,4 +1206,4 @@ Using For
}

注意,所有库调用都是实际的 EVM 函数调用。这意味着如果传递内存或值类型,都将产生一个副本,即使是 ``self`` 变量。
使用存储引用变量是唯一不会发生拷贝的情况。
使用存储引用变量是唯一不会发生拷贝的情况。