Solidity 솔리디티 강좌 6강 : View와 Pure

flowing1ife·2023년 7월 7일
0

[ Solidity 깨부수기 ]

목록 보기
6/29
post-thumbnail

Solidity 솔리디티 강좌 6강 : View와 Pure
이번엔 저번에 언급되었던 viewpure에 대해 알아보도록 하자.


View와 Pure

📌 Solidity

view : function 밖의 변수들을 읽을 수 있으나 변경이 불가능
pure : function 밖의 변수들을 읽지도 변경도 불가능

📍view, pure를 명시하지 않으면 function 밖의 변수들을 읽고 변경도 가능하다.

1. view

// SPDX-License-Identifier: GPL-3.0
pragma solidity >= 0.7.0 < 0.9.0;

contract lec6{
    //1.view
    uint256 public a = 1;
    function read_a() public view returns(uint256){
        return a+2;
    }
}

👉 결과

이처럼 read_a 함수는 변수 a를 읽어와 +2를 한 값인 3을 return 하지만, 이후 다시 변수 a를 call 해보면 기존의 값인 1을 저장하고 있으며 변경이 되지 않았다.

2. pure

// SPDX-License-Identifier: GPL-3.0
pragma solidity >= 0.7.0 < 0.9.0;

contract lec6{
    //1.view
    uint256 public a = 1;
    function read_a() public view returns(uint256){
        return a+2;
    }
	
  	//추가
    //2.pure
    function read_a2() public pure returns(uint256){
        uint256 b = 1;
        return 4+2+b;
    }
}

👉 결과

read_a2 함수는 함수 밖의 변수인 a가 아닌 함수 내의 변수인 b를 읽어 +4, +2를 한 값인 7을 return 하였다. 이처럼 pure의 경우, 함수 내의 변수들만 사용한다.

3. view와 pure 모두 없는 경우

// SPDX-License-Identifier: GPL-3.0
pragma solidity >= 0.7.0 < 0.9.0;

contract lec6{
    //1.view
    uint256 public a = 1;
    function read_a() public view returns(uint256){
        return a+2;
    }

    //2.pure
    function read_a2() public pure returns(uint256){
        uint256 b = 1;
        return 4+2+b;
    }
	
  	//추가
    //3.pure view X
    function read_a3() public returns(uint256){
        a = 13;
        return a;
    }
}

👉 결과

-- read_a3 함수 호출 후 →

read_a3 함수를 호출하기 전까지 변수 a의 값은 1이었다. 그러나 호출 후에는 read_a3 함수가 변수 a를 읽어 값을 13으로 변경했기 때문에, 변수 a의 값이 13이 되었다. 이처럼 view, pure가 없는 함수의 경우 함수 밖의 변수를 읽고 변경할 수 있다.


출처 및 참고 자료

profile
👩🏻‍💻 Backend Engineer, Contract Developer

0개의 댓글