纯函数(Pure Functions)
当承诺不读取或修改状态时,函数可以声明为pure
。
除了上面解释的修改状态语句的列表之外,以下语句被认为是读取状态:
- 从状态变量读取。
- 访问
this.balance
或<address>.balance
。 - 访问
block
,tx
,msg
中的任何成员,除了msg.sig
和msg.data
之外。 - 调用任何未标记为
pure
的函数。 - 使用包含某些操作码的内联程序集。
pragma solidity ^0.4.16;
contract C {
function f(uint a, uint b) public pure returns (uint) {
return a * (b + 42);
}
}
警告 |
---|
编译器没有强制要求pure 方法不读取状态 |