Solidity-contracts

提供:Dev Guides
移動先:案内検索

堅牢性-契約

Solidityの契約は、C ++のクラスに似ています。 契約には次のプロパティがあります。

  • Constructor -コントラクトごとに1回実行され、コントラクトの作成時に呼び出されるコンストラクターキーワードで宣言された特別な関数。
  • 状態変数-契約の状態を保存する契約ごとの変数。
  • 関数-状態変数を変更して契約の状態を変更できる契約ごとの関数。

可視性の数量化

以下は、コントラクトの関数/状態変数のさまざまな可視性数量化子です。

  • external -外部関数は、他のコントラクトによって呼び出されることを意図しています。 内部コールには使用できません。 コントラクト内で外部関数を呼び出すには、this.function_name()呼び出しが必要です。 状態変数を外部としてマークすることはできません。
  • public -パブリック関数/変数は外部と内部の両方で使用できます。 パブリック状態変数の場合、Solidityはゲッター関数を自動的に作成します。
  • internal -内部関数/変数は、内部的に、または派生コントラクトによってのみ使用できます。
  • private -プライベート関数/変数は内部でのみ使用でき、派生コントラクトでも使用できません。

pragma solidity ^0.5.0;

contract C {
  //private state variable
   uint private data;

  //public state variable
   uint public info;

  //constructor
   constructor() public {
      info = 10;
   }
  //private function
   function increment(uint a) private pure returns(uint) { return a + 1; }

  //public function
   function updateData(uint a) public { data = a; }
   function getData() public view returns(uint) { return data; }
   function compute(uint a, uint b) internal pure returns (uint) { return a + b; }
}
//External Contract
contract D {
   function readData() public returns(uint) {
      C c = new C();
      c.updateData(7);
      return c.getData();
   }
}
//Derived Contract
contract E is C {
   uint private result;
   C private c;

   constructor() public {
      c = new C();
   }
   function getComputedResult() public {
      result = compute(3, 5);
   }
   function getResult() public view returns(uint) { return result; }
   function getData() public view returns(uint) { return c.info(); }
}

link:/solidity/solidity_first_application [Solidity First Application]の章に記載されている手順を使用して、上記のプログラムを実行します。 契約のさまざまなメソッドを実行します。 E.getComputedResult()の後にE.getResult()が続く場合-

出力

0: uint256: 8