Solidity 솔리디티 강좌 6강 : View와 Pure
이번엔 저번에 언급되었던 view
와 pure
에 대해 알아보도록 하자.
view : function 밖의 변수들을 읽을 수 있으나 변경이 불가능
pure : function 밖의 변수들을 읽지도 변경도 불가능
📍view, pure
를 명시하지 않으면 function 밖의 변수들을 읽고 변경도 가능하다.
// 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을 저장하고 있으며 변경이 되지 않았다.
// 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
의 경우, 함수 내의 변수들만 사용한다.
// 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
가 없는 함수의 경우 함수 밖의 변수를 읽고 변경할 수 있다.
출처 및 참고 자료