2020.코딩일지
[solidity] 가시성지정자(public,external,private,internal)/view pure (feat.솔리디티깨부수기) 본문
Block Chain
[solidity] 가시성지정자(public,external,private,internal)/view pure (feat.솔리디티깨부수기)
개발하는라푼젤 2022. 11. 28. 23:07728x90
1. 가시성지정자
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
//public: 모든 곳에서 접근가능
//external: 모든 곳에서 접근가능하나, external이 정의된 **자기자신 컨트랙 내에서 접근불가**
//private: 정의된 자기 컨트랙내에서만 가능(private정의된 컨드랙을 **상속받은 자식도 불가능)**
//internal: 정의된 자기 컨트랙네에서만 가능( 상속받은 자식 가능 !!)
contract lec3 {
uint256 public a = 5;
uint256 private a2 = 5;
}
contract Public_example {
uint256 public a = 3;
function changeA(uint256 _value) public {
a = _value;
}
function get_a() view public returns (uint256) {
return a;
}
}
contract Public_example_2 {
Public_example instance = new Public_example(); //인스턴스정의
function changeA_2(uint256 _value) public {
instance.changeA(_value);
}
function use_public_example_a() view public returns (uint256) {
return instance.get_a();
}
}
2. view와 pure
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
contract lec4 {
/*
view: 함수 밖의 변수를 읽을 수 있으나 변경 불가능
pure: 함수 밖의 변수를 읽지도 못하고, 변경도 불가능 (내부에서만 사용할때)
view와 pure 둘다 명시 안할때 : 함수밖의 변수들을 읽어서, 변경을 해야할 때
*/
uint256 public a = 1;
//1. view
function read_a() public view returns(uint256){
return a+2; //함수밖의 변수 a를 불러와서 사용
}
//2. pure
function read_a2() public pure returns(uint256) {
uint256 b = 1;
return 4+2+b; //pure기때문에 a를 못불러옴
}
//3. 둘다 명시 안할때 : 밖의 변수들을 읽어서, 변경해야하니까 명시를안함!...이건 가스소모됨;
function read_a3() public returns(uint256) {
a = 13;
return a;
}
}
'Block Chain' 카테고리의 다른 글
[solidity] instance(분신)-constructor/상속/overriding (feat.솔리디티깨부수기) (0) | 2022.11.28 |
---|---|
[solidity] 저장영역4가지 (feat.솔리디티깨부수기) (0) | 2022.11.28 |
[solidity] DataType/function/ (feat.솔리디티깨부수기) (0) | 2022.11.28 |
Section3:블록체인 기술(1) - 트릴레마 [BEB 6th] (0) | 2022.08.30 |
Section3:블록체인 기술(1) - 암호화폐, 암호화, 지갑 [BEB 6th] (0) | 2022.08.26 |
Comments