【CryptoZombies】lesson1 Chapter 9: Private / Public Functions

In Solidity, functions are public by default. This means anyone (or any other contract) can call your contract's function and execute its code.

it's good practice to mark your functions as private by default, and then only make public the functions you want to expose to the world.

Let's look at how to declare a private function:

uint[] numbers;

function _addToArray(uint _number) private {
 numbers.push(_number);
}

公開OK→public
公開イヤ→private

This means only other functions within our contract will be able to call this function and add to the numbers array.

As you can see, we use the keyword private after the function name. And as with function parameters, it's convention to start private function names with an underscore (_).
→function _addToArray()

test

Our contract's createZombie function is currently public by default — this means anyone could call it and create a new Zombie in our contract! Let's make it private.

1.Modify createZombie so it's a private function. Don't forget the naming convention!

pragma solidity >=0.5.0 <0.6.0;

contract ZombieFactory {

   uint dnaDigits = 16;
   uint dnaModulus = 10 ** dnaDigits;

   struct Zombie {
       string name;
       uint dna;
   }

   Zombie[] public zombies;

   function createZombie(string memory _name, uint _dna) public {
       zombies.push(Zombie(_name, _dna));
   }

}

pragma solidity >=0.5.0 <0.6.0;

contract ZombieFactory {

   uint dnaDigits = 16;
   uint dnaModulus = 10 ** dnaDigits;

   struct Zombie {
       string name;
       uint dna;
   }

   Zombie[] public zombies;

   function _createZombie(string memory _name, uint _dna) private {
       zombies.push(Zombie(_name, _dna));
   }

}


この記事が気に入ったらサポートをしてみませんか?