solidity 05. 변수 스코프

BlockChain,NFT,Web3.0/Solidity 2022. 1. 15. 01:46
반응형

지역 변수의 범위는 정의된 함수로 제한되지만 상태 변수는 세 가지 유형의 범위를 가질 수 있다 

Public

공개 상태 변수는 내부뿐만 아니라 메시지를 통해 액세스할 수 있다

공개 상태 변수의 경우 자동 get 함수가 생성됩니다

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;

contract MyContract {
   uint public data = 30;
}

contract Caller {
   MyContract myContract = new MyContract();
   function f() public view returns (uint) {
      return myContract.data(); //external access
   }
}



Internal

현재 계약 또는 계약에서 파생된 내부 상태 변수만 액세스할 수 있다 

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;

contract BaseContract {
    uint internal data2 = 20;
}

contract MyContract is BaseContract {
   uint public data = 30;

    function f() public view returns (uint){
        return data2;   //접근 가능 
    }
}



contract Caller {
   
   MyContract myContract = new MyContract();

   function f() public view returns (uint) {
      return myContract.data(); //external access
   }

   function f1() public view returns (uint) {
       //return myContract.data2;   //접근 불가 
   }
}



Private

비공개 상태 변수는 파생된 계약에 정의되지 않은 현재 계약에서만 내부적으로 액세스할 수 있다 

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.7;

contract BaseContract {
    uint internal data2 = 20;
    uint private data3 = 10;

    function getData3() public view returns (uint){
        return data3;   //접근 가능 
    }
}

contract MyContract is BaseContract {
   uint public data = 30;

    function f() public view returns (uint){
        return data2;   //접근 가능 
    }

    function f1() public view returns (uint){
        //return data3;   //접근 불가 
    }
}



contract Caller {
   
   MyContract myContract = new MyContract();

   function f() public view returns (uint) {
      return myContract.data(); //external access
   }

   function f1() public view returns (uint) {
       //return myContract.data2;   //접근 불가 
   }
}

 

 

 

 


참고 
https://docs.soliditylang.org/en/v0.8.11/types.html#mapping-types
https://www.tutorialspoint.com/solidity/solidity_variables.htm
https://merrily-code.tistory.com/98?category=962149

https://www.youtube.com/watch?v=jPHXG82WCYA&list=PLbbtODcOYIoE0D6fschNU4rqtGFRpk3ea&index=5
https://remix.ethereum.org/
https://www.geeksforgeeks.org/solidity-variables/

 

반응형

'BlockChain,NFT,Web3.0 > Solidity' 카테고리의 다른 글

solidity 07. 반복문 (Loop)  (0) 2022.01.15
solidity 06. 연산자 (Operators)  (0) 2022.01.15
solidity 04. 변수 및 데이터 타입  (0) 2022.01.15
solidity 02. 기본 문법  (0) 2022.01.15
solidity 01. 개요  (0) 2022.01.14
: