inflearn logo
강의

Course

Instructor

ERC20 Breaking (+ truffle, frontend)

Mapping and Array

pure view

450

impatrick972466

9 asked

1

    function balance1(address _a) public view returns (uint256) {
        return _a.balance;
    }    
    
    function fun1(uint256 _a) public pure returns (uint256) {
        if (_a == 3) {
            return 555;
        }
        return 111;
    }

안녕하세요 여기 두개 함수에서 둘다 외부에서 _a를 받아오는것으로 보이는데 왜 위에는 view를 쓰고
밑에는 pure 를 쓰는건지 잘 모르겠습니다.

블록체인 blockchain solidity truffle Smart Contract

Answer 1

0

done

안녕하세요 제원님 :)

    function balance1(address _a) public view returns (uint256) {
        return _a.balance;
    }    
    
    function fun1(uint256 _a) public pure returns (uint256) {
        if (_a == 3) {
            return 555;
        }
        return 111;
    }

두함수를 보시면, balance1(address _a)와 fun1(uint256 _a) 이렇게 되어있죠,

즉 변수 _a는 함수의 파라메터에 최초로 정의된 것 알 수가 있습니다.

변수 _a가 파라메터로 정의됬다는 뜻은 함수 내부에서만 사용이 가능한 로컬변수 라고 생각할 수 있습니다. 즉 _a를 함수 밖으로 가져가서 사용하지 못 하겠죠

 

자 그러면, pureview는 무엇일까요 ?

pureview는 데이터를 저장하지 않을 때 사용되는 모디파이어 입니다.

두 함수에서 볼 수 있듯이, 함수 밖의 변수에 데이터를 따로 저장하지 않고 있죠?

자 그러면 pureview의 차이점은 무엇일까요?

일단 balance1(address _a)view 부터 보겠습니다.

view 는 함수의 밖에 있는 데이터 값을 읽어 올 때 사용합니다.

_a 는 함수 내부에 정의된 로컬변수 인데, 어떻게 외부의 값을 읽어와서 view라고 표시한걸까요?

_a는 주소형 타입 address 인것을 알 수 있습니다.

주소형 타입의 경우 멤버변수로 balance를 조회할 수 있습니다.

(balance는 현재 사용중인 블록체인의 메인 코인의 잔액을 나타냅니다)

즉, _a는 로컬 변수지만, 주소형이기에, 멤버변수인 balance라는것을 조회하기에 view를 쓴것을 알 수 있습니다.

이와 반대로,

fun1(uint256 _a)의 pure는 uint인 정수형 타입이며, 밖에서 읽어 들여오는게 없죠

그렇기 때문에 pure를 사용한것을 알 수 있습니다.

 

정리하자면,

pureview는 함수 밖의 변수의 데이터를 저장하지 않을 때, 함수에 적용한다.

view는 함수 밖의 변수의 데이터를 저장하지 않을 때, 함수 밖의 변수의 값을 읽어 올 때, 함수에 적용한다.

pure는 함수 밖의 변수의 데이터를 저장하지 않을 때, 함수 밖의 변수의 값을 읽어 오지않을 때 함수에. 적용한다.

 

감사합니다 :)

 

 

2025년으로 업데이트된 이더리움 마스터링 강의 내용에 대한 문의

0

51

2

강의자료 요청드립니다.

0

47

1

실습하는 영상은 없는 건가요?

0

78

3

LAYER2

0

92

1

Web3.js1

0

125

2

컴파일 및 배포

0

175

1

컴파일 및 배포

0

190

4

rinkeby testnet 사용

0

134

1

강의 업데이트 문의

1

498

1

fallback

1

443

1

SafeMath 함수

1

560

1

솔리디티

1

445

1

안녕하세요 강사님 질문이 있습니다

1

312

1

function 매개변수에 관한 질문이 있습니다

1

326

2

가스비 질문이 있습니다

1

357

2

Ownable에 대해서 질문이 있습니다

1

350

1

ERC20과 프론트엔드연결 지갑 변경 관련 질문 입니다!

1

367

2

ERC20과 프론트엔드 연결 테스트 코드 질문입니다.

1

215

1

migration 질문

0

560

1

Chai와 Chai BN강의 부분이 50분 강의로 되어 있습니다.

0

231

1

강의가 일부분 누락되어 있습니다(해결)

0

226

1

truffle react box 질문입니다

0

309

1

expect 테스트가 정상적으로 동작하지 않습니다

1

192

1

솔리디티 깨부수기 강의 순서

1

198

1