📜  Solidity – 视图和纯函数(1)

📅  最后修改于: 2023-12-03 15:20:10.887000             🧑  作者: Mango

Solidity – 视图和纯函数

在Solidity中,有两种类型的函数:视图函数和纯函数。这两种函数都不会修改智能合约的状态,因此它们可以在任何地方调用,而不会触发对区块的记录。

视图函数

视图函数返回的结果仅仅是一个视图,不会对合约状态造成任何影响。这意味着您可以安全地在任何地方调用这些函数,而不必担心创建交易或修改合约状态。视图函数标记为 viewpure

以下示例演示如何定义视图函数:

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 函数是一个纯函数,因为它仅执行数学计算,并且没有访问该合约的任何状态或数据。

总结

视图函数和纯函数都是十分有用的工具,可以用于查看当前状态或执行某些计算而不引起负面影响。它们十分适用于后端开发、测试和交互式命令行界面。你可以在任何地方调用这些函数,而不用担心它会产生任何负面影响。