Solidity view 函数
view(视图)函数只能读取合约状态,不能修改合约状态。在 view 函数体修改合约状态时,编译器会直接报错。使用 view 函数可以提高代码安全性,避免出现与预期不符副作用。如果你的函数承诺不会修改合约状态,那么你应该将其声明为 view 函数。如下所示:
view 函数
uint count;
function GetCount() public view returns(uint) {
return count;
}
怎样才算修改合约状态
Solidity 有8种行为被认为是修改了合约状态:
- 修改状态变量
- 触发事件
- 创建其他合约
- 使用
selfdestruct来销毁合约 - 通过函数调用发送以太币
- 调用未标记为
view或pure的任何函数 - 使用低级别调用,如
transfer,send,call,delegatecall等 - 使用包含某些操作码的内联汇编