Solidity view函数
solidity view函数,也就是视图函数,是指函数只会读取状态,不会修改状态。
换言之,solidity view函数只会读取链上数据,不会修改链上数据。
如果函数中存在以下语句,则被视为修改状态,编译器将抛出警告。
- 修改状态变量。
- 触发事件。
- 创建合约。
- 使用
selfdestruct
。 - 发送以太。
- 调用任何不是视图函数或纯函数的函数
- 使用底层调用
- 使用包含某些操作码的内联程序集。
状态变量的Getter方法默认是view函数。
声明为view图函数,可以在函数声明里,添加view
关键字。
示例
// SPDX-License-Identifier: MIT pragma solidity 0.8.7; contract ViewDemo { uint factor = 2; // 状态变量 function getResult(uint num) public view returns(uint){ uint result = num * factor; return result; } }
运行上述程序,输入100,输出:
0: uint256: 200
在这个例子中,函数getResult中,只是读取了状态变量factor的值,而没有修改它的值,所以这个函数是一个view函数。
Solidity构造函数是一个特殊函数,它仅能在智能合约部署的时候调用一次,之后就不能再次被调用。Solidity构造函数常用来进行状态变量的初始化工作。Solidity编译器中,使用关键词 constructo ...