Solidity 솔리디티 강좌 19강 : Mapping(맵핑) 과 Array(배열) 주의할 점
이번엔 solidity의 Mapping과 Array 사용시 주의할 점에 대해 알아보도록 하자.
// SPDX-License-Identifier:GPL-30
pragma solidity >= 0.7.0 < 0.9.0;
contract lec19{
uint256 num = 89;
mapping(uint256 => uint256) numMap;
uint256[] numArray;
function changeNum(uint256 _num) public{
num = _num;
}
function showNum() public view returns(uint256){
return num;
}
function numMapAdd() public{
numMap[0] = num;
}
function showNumMap() public view returns(uint256){
return numMap[0];
}
function UpdateMap() public{
numMap[0] = num;
}
function numArrayAdd() public{
numArray.push(num);
}
function showNumArray() public view returns(uint256){
return numArray[0];
}
function updateArray() public {
numArray[0] = num;
}
}
👉 결과
num
의 값은 89numArrayAdd
실행 => index 0의 값 : 89numMapAdd
실행 => (0 => 89) mapping
changeNum
을 실행해 num
의 값을 5로 변경한 후, 다시 Array, Mapping의 값을 확인해보았지만 이들의 값은 89로 변경되지 않았다. 이처럼 배열과 매핑은 그 당시 캡처값을 가지고 온다. 따라서 update를 반드시 해주어야 한다.
매핑과 배열을 업데이트 한 후, 다시 값을 조회해보니 5로 값이 변경이 되었다.
출처 및 참고 자료