一、概念
在Solidity中,view
和pure
是两个函数修饰符,用于标识函数的特性和行为。
view
:view
修饰符用于表示函数仅读取合约状态,不会修改任何状态变量。它是一种只读函数,用于提供数据查询和计算服务。view
函数不会消耗任何Gas(燃料)并且不会修改区块链状态。它们只能调用其他view
或pure
函数,而不能调用普通函数。
pure
:pure
修饰符表示函数既不会读取合约状态,也不会修改任何状态变量。它仅执行纯计算操作,并返回计算结果。pure
函数与view
函数相似,但更严格,不能读取合约状态或调用其他非纯函数。
二、应用
contract ViewPureTest {
uint256 public myVariable;
///view:view修饰符用于表示函数仅读取合约状态,不会修改任何状态变量。它是一种只读函数,用于提供数据查询和计算服务。
///view函数不会消耗任何Gas(燃料)并且不会修改区块链状态。它们只能调用其他view或pure函数,而不能调用普通函数。
function getValue() public view returns (uint256) {
//uint256 i = 1;//函数内部变量不能使用访问修饰语,同时内部变量默认状态为memory
return myVariable;
}
///pure:pure修饰符表示函数既不会读取合约状态,也不会修改任何状态变量。
///它仅执行纯计算操作,并返回计算结果。pure函数与view函数相似,但更严格,不能读取合约状态或调用其他非纯函数。
function add(uint256 a, uint256 b) public pure returns (uint256) {
return a + b;
}
}
在上述示例中,getValue
函数使用了view
修饰符,因为它仅返回合约中的一个状态变量,并不修改任何状态;add函数用了pure修饰符,因为它仅执行两个数相加的计算操作,并不读取和修改合约状态变量。