堅牢性-純粋関数

純粋関数は、状態を読み取ったり変更したりしないようにします。関数は次のように宣言できますpure。次のステートメントが関数に存在する場合、状態を読み取っていると見なされ、そのような場合、コンパイラーは警告をスローします。

  • 状態変数の読み取り。

  • address(this).balanceまたは<address> .balanceにアクセスします。

  • block、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