본문 바로가기
솔리디티/크립토좀비

레슨2 챕터9 - 함수 접근 제어자

by 멸치김밥 2022. 2. 12.

함수에 private 이나 public을 붙임에 따라 함수 사용(접근)에 제한을 줄 수 있다.

기본적으로 아무것도 안쓰면 public이다

 

  • public

다른 컨트랙트에서도 호출할 수 있게 된다

 

  • private

해당 함수가 속해있는 컨트랙트에서만 호출할 수 있고 다른 컨트랙트에서는 사용할 수 없다.

 

  • internal

해당 함수가 속한 컨트랙트와 해당 컨트랙트를 상속받는 컨트랙트에서만 사용할 수 있고

그외의 상속받지 않은 다른 컨트랙트에서는 사용할 수 없다. 

 

  • external

함수가 있는 컨트랙트 내부에서는 사용할 수 없고 다른 컨트랙트에서만 사용할 수 있다.

 


챕터 9 수정 전

    function _createZombie(string _name, uint _dna) private {
        uint id = zombies.push(Zombie(_name, _dna)) - 1;
        zombieToOwner[id] = msg.sender;
        ownerZombieCount[msg.sender]++;
        NewZombie(id, _name, _dna);
    }

수정 후

    function _createZombie(string _name, uint _dna) internal {
        uint id = zombies.push(Zombie(_name, _dna)) - 1;
        zombieToOwner[id] = msg.sender;
        ownerZombieCount[msg.sender]++;
        NewZombie(id, _name, _dna);
    }

댓글