CryptoZombies | Arrays

728x90

Arrays

  • Solidity에는 정적 배열동적 배열 존재
// 2개의 원소를 담을 수 있는 고정 길이의 배열
uint[2] fixedArray;
// 또다른 고정 배열으로 5개의 스트링을 담을 수 있음
string[5] stringArray;
// 동적 배열은 고정된 크기가 없으며 계속 크기가 커질 수 있음
uint[] dynamicArray;

 

정적 배열(Static Array)

  • 배열의 크기가 고정되어있고, 크기를 변경할 수 없음
  • 선언 시 배열 크키 명시
  • 주로 크기가 변하지 않는 데이터를 다룰 때 사용

동적 배열(Dynamic Array)

  • 배열의 크기를 유연하게 변경할 수 있음
  • 요소를 추가하거나 제거 가능
  • 주로 크기가 유동적인 데이터를 다룰 때 사용

구조체 배열

Person[] people;	// 동적 배열, 원소를 계속 추가할 수 있음

⇒ 데이터베이스처럼 활용 가능

  • 블록체인에 영구적으로 데이터를 저장하며, 여러 속성을 가진 데이터를 관리할 수 있음
  • ex) 사용자 정보, 제품 목록, 계약 정보 등

Public 배열

  • getter 메소드를 자동적으로 생성
Person[] public people;
  • getter 메소드를 통해 배열의 특정 인덱스에 접근할 수 있는 함수도 제공
  • 다른 contract에서 배열의 내용을 조회할 수는 있지만, 배열의 내용을 직접 수정할 수는 없음.

⇒ 블록체인에 저장된 데이터를 공개적으로 관리할 때 유용


CryptoZombies 실습

pragma solidity ^0.4.19;

contract ZombieFactory {

    uint dnaDigits = 16;
    uint dnaModulus = 10 ** dnaDigits;

    struct Zombie {
        string name;
        uint dna;
    }

    Zombie[] public zombies;

}
  • Zombie 구조체의 배열 zombies를 public으로 선언 (동적 배열)
728x90