728x90

이 글은 인프런 "솔리디티 깨부수기" 6강 강의를 듣고 정리한 글입니다. 

 

[지금 무료] 솔리디티 깨부수기 | D_One - 인프런

D_One | 이 강의를 통해서, 스마트 컨트랙 제작을 위한 솔리디티 언어를 배울수 있습니다., 코딩이 처음인 분들도 OK! 처음 배우는 솔리디티, 쉽게 시작해보세요. 강의 주제 📖 [사진] 이 강의에서

www.inflearn.com


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 둘다 명시 안 할 때는 함수 밖의 변수들을 읽어서, 변수를 변경할 때 명시를 하지 않는다.

 

 

+ Recent posts