Solidity 문법 - (6) view와 pure

2023. 5. 29. 17:21BlockChain/Solidity 깨부수기 ( 유투브 강의 )

목차
1. view와 pure
2. view와 pure의 예제 코드

 

1. view와 pure

 

 

솔리디티에는 함수에 상태 변경 가능성을 나타내는 키워드를 적을 수 있다.

 

view

함수(function) 밖의 변수들을 읽을 수 있으나 변경이 불가능하다.

 

pure

함수(function) 밖의 변수들을 읽을 수 없고, 변경도 불가능하다.

 

아무것도 적지 않을 경우

함수(function) 밖의 변수들을 읽을 수 있고, 변경도 가능하다.

 

 

2. view와 pure의 예제 코드

 

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract State {
    uint256 public a = 1;

    function stateA () public view returns(uint256) {
        return a + 2;
    }
    
    function stateB () public pure returns(uint256) {
        uint256 b = 4;
        return b + 2;
    }

    function stateChangeA () public returns(uint256) {
        a = 13;
        return a;
    }
}

 

 

stateA는 view로 작성되었으므로, 함수밖의 변수인 a를 읽을 수 있다.

 

코드 상에서는 a에 2를 더해 변경하는 코드를 적었지만, 실행해도 a는 변경이 되지 않는다.

 

state라는 변수에 인스턴스를 생성하여 담았다.

 

state.a()를 이용해서 변수 a를 출력했을 때 바이너리로 1을 나타내고,

 

state.stateA()를 실행하였을 땐 1에 2를 더한 3을 나타낸다.

 

하지만, 다시 state.a()를 출력했을 때 3이 아닌 1이 출력되는 것을 볼 수 있다.

 

 

그럼 아무것도 적히지 않은 stateChangeA를 실행하면 a가 바뀌는지 실행해보자.

 

 

변수 a의 값이 13으로 바뀐것을 알 수 있다.