📜  Solidity-纯函数

📅  最后修改于: 2020-11-04 04:26:39             🧑  作者: Mango


 

纯函数确保它们不读取或修改状态。一个函数可以声明为pure 。如果函数中存在以下语句,则认为它们正在读取状态,并且在这种情况下编译器将发出警告。

  • 读取状态变量。
  • 正在访问address(this).balance或
    .balance。
  • 访问块tx,msg的任何特殊变量(可以读取msg.sig和msg.data)。
  • 调用任何未标记为纯函数。
  • 使用包含某些操作码的内联汇编。

如果发生错误,纯函数可以使用revert()和require()函数还原潜在的状态更改。

请参阅以下使用视图函数的示例。

pragma solidity ^0.5.0;

contract Test {
   function getResult() public pure returns(uint product, uint sum){
      uint a = 1; 
      uint b = 2;
      product = a * b;
      sum = a + b; 
   }
}

使用Solidity First Application一章中提供的步骤运行上述程序。

输出

0: uint256: product 2
1: uint256: sum 3