在Solidity中,view和pure是用于修饰函数的两个关键字,它们表明了函数对区块链状态的修改程度
在Solidity中,view
和pure
是用于修饰函数的两个关键字,它们表明了函数对区块链状态的修改程度:
view
函数:view
函数声明不会修改区块链的状态,但可以读取状态变量的值。pure
函数:pure
函数声明既不会读取也不会修改区块链的状态。view
函数示例pragma solidity ^0.8.26;
contract ViewExample {
uint256 public number;
constructor(uint256 _initialNumber) {
number = _initialNumber;
}
// view函数,读取状态变量number,但不修改它
function getNumber() public view returns (uint256) {
return number;
}
// 非view函数,修改状态变量number
function setNumber(uint256 _newNumber) public {
number = _newNumber;
}
}
在上面的示例中,getNumber
是一个view
函数,因为它读取了状态变量number
但没有修改它。setNumber
则是一个普通的非view
函数,因为它修改了状态变量number
。
pure
函数示例pragma solidity ^0.8.26;
contract PureExample {
// pure函数,不读取也不修改任何状态变量
function add(uint256 a, uint256 b) public pure returns (uint256) {
return a + b;
}
// 非pure函数,读取状态变量但不修改它
function multiplyWithNumber(uint256 a, uint256 b) public pure returns (uint256) {
return a * b;
}
}
在上面的示例中,add
是一个pure
函数,因为它不依赖于任何状态变量,只依赖于输入参数a
和b
进行计算。类似的,multiplyWithNumber
也只依赖于其输入参数,并不读取或修改任何状态变量。
view
函数可以读取区块链上的状态,但不能修改它。pure
函数既不能读取也不能修改区块链上的状态。这两种函数修饰符有助于优化合约的可读性和安全性,并且在编译时提供额外的错误检查。
写文章不易,如果文章对您有帮助,欢迎点个赞,您的支持是我写作的最大动力。
相关资料、源码已同步github https://github.com/MagicalBridge/Blog 欢迎star
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!