【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です。
お疲れさまでした!
<参考>
CryptoZombies - イーサリアム上でゲームを開発する方法を学習。Powered by Loom Network