solidity: view和pure关键字
Solidity 中的 pure
和 view
是函数修饰符关键字,用于声明函数的属性和行为。它们的作用如下:
-
pure
关键字:用于声明函数是纯函数,即函数不读取或修改合约的状态变量,并且不与外部合约进行交互。纯函数只根据输入参数计算结果,并返回一个值。- 纯函数不会改变合约状态,也不会发送交易或调用其他合约。
- 纯函数内部不能访问
msg
、block
和tx
这些全局变量。 - 纯函数在不同的块上执行时,给定相同的输入参数,总是返回相同的结果。
使用
pure
关键字可以提供以下好处:- 在编译时进行静态检查,确保函数不会修改状态或与外部合约交互。
- 提供更好的可读性和可理解性,明确函数的行为和约束。
- 允许 Solidity 编译器进行更多的优化,提高代码执行效率。
示例使用
pure
关键字的函数定义:solidityfunction add(uint256 a, uint256 b) public pure returns (uint256) { return a + b; } ```
-
view
关键字:用于声明函数是视图函数,即函数不修改合约的状态变量,但可以读取合约的状态。视图函数用于查询合约状态或计算结果,而不会改变合约的状态。- 视图函数不会改变合约状态,也不会发送交易或调用其他合约。
- 视图函数可以读取合约的状态变量和其他视图函数的返回值。
- 视图函数内部不能修改状态变量的值。
使用
view
关键字可以提供以下好处:- 在编译时进行静态检查,确保函数不会修改状态。
- 允许在函数中访问合约的状态,并进行相应的计算和查询操作。
- 允许 Solidity 编译器进行更多的优化。
示例使用
view
关键字的函数定义:solidityfunction getBalance(address account) public view returns (uint256) { return balances[account]; } ```
总结起来,pure
和 view
关键字用于在 Solidity 中声明函数的属性,以提供更好的代码可读性、约束和优化。pure
用于纯函数,而 view
用于视图函数。这些修饰符有助于更清晰地定义和理解函数的行为和用途。