728x90
이 글은 인프런 "솔리디티 깨부수기" 6강 강의를 듣고 정리한 글입니다.
VIEW & PURE
function use_public_example_a() view public returns (uint256) {
//...
}
이전 강의에서 get_a() 함수에 view라는 것을 처음 보았는데, 해당 자리는 view 혹은 pure이 들어갈 수 있다. 이는 pulbc 과 같은 접근 제한자 앞 이나 뒤 어디든 들어 갈 수 있다
view
함수 밖에 있는 변수들을 읽을 수 있지만 변경이 불가능할 때 사용하는 것이 view이다.
pragma solidity >=0.7.0 <0.9.0;
contract View_example{
uint256 public a = 1;
function read_a() public view returns(uint256){
return a+2;
}
}
위의 예시 코드에서 함수 밖에 변수에 값이 저장되고 read_a 함수에 view를 명시를 했다. read_a 함수는 a 변수의 값을 읽어 올 수는 있지만 변경이 불가능하기 때문에 배포를 한 뒤에도 a의 값은 변경되지 않고 그대로 임을 확인할 수 있다.
pure
함수 밖의 변수들을 읽지도 못하고 변경이 불가능할 때, 사용하는 것으로 외부 변수 값을 가지고 올 수 없기 때문에 함수 내에서만 쓸 수 있는 로컬변수들로만 구성된 것이라 볼 수 있다.
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
contract Pure_example{
uint256 public a = 1;
function read_a() pure public returns(uint256){
uint256 a = 4;
return a+2;
}
}
위의 예시에서는 pure로 정의한 함수는 외부 변수를 읽어올 수 없기 때문에 로컬변수 a만 읽어올 수 있다. 로컬변수 a 는 4 을 대입받고, 2를 더해서 마지막에는 6로 리턴하게 된다.
이외에 viwe 와 pure 둘다 명시 안 할 때는 함수 밖의 변수들을 읽어서, 변수를 변경할 때 명시를 하지 않는다.
'자기개발 > 블록체인' 카테고리의 다른 글
[솔리디티 깨부수기] instance 정의 (0) | 2024.05.10 |
---|---|
[솔리디티 깨부수기] function4 - string (0) | 2024.05.10 |
[솔리디티 깨부수기] funtion2 : 접근 제한자 (0) | 2024.05.06 |
[솔리디티 깨부수기] Ether/GWei 그리고 Gas & Function1 (0) | 2024.04.29 |
[ 솔리디티 깨부수기 ] Hello Solidity & data type (0) | 2024.04.16 |