📅  最后修改于: 2023-12-03 15:20:10.887000             🧑  作者: Mango
在Solidity中,有两种类型的函数:视图函数和纯函数。这两种函数都不会修改智能合约的状态,因此它们可以在任何地方调用,而不会触发对区块的记录。
视图函数返回的结果仅仅是一个视图,不会对合约状态造成任何影响。这意味着您可以安全地在任何地方调用这些函数,而不必担心创建交易或修改合约状态。视图函数标记为 view
或 pure
。
以下示例演示如何定义视图函数:
pragma solidity ^0.6.0;
contract MyContract {
uint[] public numbers;
function getNumber(uint _index) public view returns (uint){
return numbers[_index];
}
}
在上面的代码中,getNumber
函数是一个视图函数,因为它仅返回 numbers 数组中的元素,而不修改合约状态。
纯函数是一种特殊的视图函数,它不仅不会修改状态,而且在执行期间不会访问该合约的任何数据。这使得它们成为一种十分强大和有用的工具,因为它们可以在不使用代码中的某些状态时执行某些计算。使用纯函数可以大大减少Gas的使用。
以下示例演示如何定义纯函数:
pragma solidity ^0.6.0;
contract MyContract {
function add(uint _a, uint _b) public pure returns (uint) {
return _a + _b;
}
}
在上面的代码中,add
函数是一个纯函数,因为它仅执行数学计算,并且没有访问该合约的任何状态或数据。
视图函数和纯函数都是十分有用的工具,可以用于查看当前状态或执行某些计算而不引起负面影响。它们十分适用于后端开发、测试和交互式命令行界面。你可以在任何地方调用这些函数,而不用担心它会产生任何负面影响。