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 |