이더리움 Contract 작성시 어떻게 매핑된 리스트를 반환할 수 있나요?

조회수 1341회

저는 값을 저장하고 리스트로 반환받을 수 있는 아주 심플한 smart contract를 작성중입니다. 아래와 같은 코드입니다.

contract lister {
    mapping(int => string) list;
    int id = 0;

    function getList() returns ( /*HERE*/ ) {
        return list;
    }

    function setItemToList(string str) {
        list[id] = str;
        id++;
    }
}

getList 함수에서 리스트 반환시켜주고싶지만 되지 않습니다. 어떻게 하면 리스트를 반환할 수 있나요?

출처: https://stackoverflow.com/questions/37606839/how-to-return-mapping-list-in-solidity-ethereum-contract 이 질문은 저작자표시-동일조건변경허락(https://creativecommons.org/licenses/by-sa/3.0/deed.ko) 라이센스로 이용할 수 있습니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

2 답변

  • 솔리디티에서 큰 사이즈의 리스트, 배열 등에 접근하는 것은 힘듭니다. 아마 다른 contract들에서도 거의 보지 못했을 것입니다. 질문자의 코드의 경우에는, 인덱스를 이용해 하나의 값에 접근하는 함수를 만들고 반복문을 이용해 모든 인덱스에 접근하는 방법은 가능합니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자
  • list 앞에 public 을 넣으면 getList에서 접근이 가능할 것입니다.

    mapping(int => string) public list;
    
    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)