Solidity 솔리디티 강좌 18강 : Array (배열)

flowing1ife·2023년 7월 7일
0

[ Solidity 깨부수기 ]

목록 보기
18/29
post-thumbnail

Solidity 솔리디티 강좌 18강 : Array (배열)
이번엔 solidity의 Array에 대해 알아보도록 하자.


Array

📌 Solidity

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부터 시작한다.

👉 결과

  1. AgePush 함수를 통해 456 값을 넣음 => 0번째 - 456
  2. AgeDelete 함수를 통해 index 0에 해당하는 값을 delete함 => 0번째 - 0
  3. AgeChange 함수를 통해 index 0에 해당하는 값을 99로 바꿈 => 0번째 - 99
  4. AgeGet 함수를 통해 index 0에 해당하는 값을 가지고 옴 => 99 return

출처 및 참고 자료

profile
👩🏻‍💻 Backend Engineer, Contract Developer

0개의 댓글