初心者文系主婦がブロックチェーンを学ぶブログ

IT革命のビッグウェーブに乗り遅れた主婦が、ブロックチェーン革命の波にのるべく、ブロックチェーン技術を学ぶブログです。

【CryptZombies】レッスン2チャプター9:別の関数とビジビリティ(InternalとExternal)

InternalとExternal

Solidityにはpublicとprivateの他に、internalとexternalという関数用のビジビリティ(表示/非表示)が用意されています。

internalはprivateと同じですが、このコントラクトから継承したコントラクトにもアクセスできるようになります。

externalはpublicと同じですが、コントラクトの外からだけ呼び出すことができます。

つまり、コントラクト内部の別の関数では呼び出すことができません。

 

internalとexternalの関数宣言はprivateやpublicの宣言方法と同じです。

contract Sandwich {
  uint private sandwichesEaten = 0;

  function eat() internal {
    sandwichesEaten++;
  }
}

contract BLT is Sandwich {
  uint private baconSandwichesEaten = 0;

  function eatWithBacon() public returns (string) {
    baconSandwichesEaten++;
    // eat関数はinternalなのでここに呼び出すことができます。
    eat();
  }
}

 

テストの実行

①_createZombie()をprivateからinternalに変更して、他のコントラクトからアクセスできるようにせよ。zombiefactory.solのタブを使うのだぞ。

internalの関数宣言方法はprivateと同じなので、privateの部分を書き換えるだけでOKです。

f:id:nomadomama:20181201232527p:plain

 

お疲れさまでした!

 

 

<参考>

CryptoZombies - イーサリアム上でゲームを開発する方法を学習。Powered by Loom Network