솔리디티 깨부수기 - 기본
솔리디티 강좌 6강 function 3 - View 와 Pure
D_One
2021. 9. 2. 02:01
지난번 강의에서, public 부분에서
function use_public_example_a() view public returns (uint256) {
//...
}
라는 function 을 보셨을거예요.
그리고 view 라는 키워드를 처음 보셨을거 구요.
저 키워드의 자리는 pulbc 과 같은 접근 제한자 앞 이나 뒤 어디든 붙이면 되요.
function use_public_example_a() view public returns (uint256)
function use_public_example_a() public view returns (uint256)
저곳에는 view 와 pure 가 들어 간답니다.
1.view : storage state 를 읽을 수 있지만, 그 state 값을 변경할 수 없다.
이 문장만 읽으면 잘이해가 안가니, 예시와 같이 볼게요.
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;
}
}
function 의 밖에 있는 것들은 storate에 저장이됩니다.
그러니 이 예제에서는 a 가 storage state 이 겠죠.
저희는 read_a() 라는 간단히 a 값을 리턴하는 함수를 만들었어요.
그러나, a 를 리턴하니, 당연히 storage state를 읽었다고 할 수 있겠죠?
그렇기 때문에 view 를 넣어야 합니다.
그렇다면, 만야에 read_a()에서 storage state의 값을 바꾼다면 어떻게 해야할까요?
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
contract View_example{
uint256 public a = 1;
function read_a() public returns(uint256){
a = 3;
return a+2;
}
}
이런식으로 아무것도 안써주면 되요.
2.pure : storage state 를 읽으면 안되고, 그 state값을 변경할 수 도 없다.
view 부분을 알았으니, pure는 어느정도 짐작이 갔으리나 생각됩니다.
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
contract Pure_example{
function read_a() pure public returns(uint256){
uint256 a = 3;
return a+2;
}
}