Solidity 솔리디티 강좌 18강 : Array (배열)
이번엔 solidity의 Array에 대해 알아보도록 하자.
Array는 length가 있고, for을 통해 순회할 수도 있다는 점에서 다른 프로그래밍 언어와 비슷하다. 그러나 solidity 내에서는 Array보다는 mapping을 더 선호한다. 왜냐하면 순환하게 하는 배열의 경우, 디도스 공격에 취약하기 때문이다. 예를 들어, 특정한 배열을 악의적으로 무한 반복하게 되면 이더리움이 과부하가 된다. 따라서 배열을 사용해야 된다면, 50 정도로 사이즈를 제한해 두는 게 좋다.
// SPDX-License-Identifier: GPL-3.0
pragma solidity >= 0.7.0 < 0.9.0;
contract lec18 {
//사이즈가 무한대
uint256[] public ageArray;
//사이즈 고정
uint256[10] public ageFixedSizeArray;
// 미리 값 정의
string[] public nameArray = ["Kal","Jhon","Kerri"];
function AgeLength()public view returns(uint256){
return ageArray.length;
}
function AgePush(uint256 _age)public{
ageArray.push(_age);
}
//0부터 인덱스 시작
function AgeGet(uint256 _index)public view returns(uint256){
return ageArray[_index];
}
function AgePop()public { //최신의 값을 지움 length도 길이가 줄어듦
ageArray.pop();
}
//0으로 채워지고 length는 그대로
function AgeDelete(uint256 _index)public {
delete ageArray[_index];
}
function AgeChange(uint256 _index, uint256 _age)public{
ageArray[_index] = _age;
}
}
uint256[] public ageArray
는 배열의 크기를 무한대로 둔 것이다.
uint256[10] public ageFixedSizeArray
는 배열의 크기를 10으로 고정하였다.
string[] public nameArray = ["Kal","Jhon","Kerri"];
의 경우, 배열의 초기값을 설정해주었다.
- array.length : 배열 길이를 반환
- array.push : 배열에 값을 넣어줌
- array.pop : 배열의 최신의 값을 지우고 length도 1 줄어듦
- delete array[i] : 배열의 i 번째에 해당하는 값이 0으로 채워지며 length는 그대로임
또한, 배열의 index는 0부터 시작한다.
👉 결과
AgePush
함수를 통해 456 값을 넣음 => 0번째 - 456AgeDelete
함수를 통해 index 0에 해당하는 값을 delete함 => 0번째 - 0AgeChange
함수를 통해 index 0에 해당하는 값을 99로 바꿈 => 0번째 - 99AgeGet
함수를 통해 index 0에 해당하는 값을 가지고 옴 => 99 return
출처 및 참고 자료