• 카테고리

    질문 & 답변
  • 세부 분야

    블록체인

  • 해결 여부

    미해결

컨트랙트 최적화2 에서 mapping 이 이해가 잘가지않습니다.

19.08.08 16:57 작성 조회수 162

0

제가 알기로는 mapping 이 Key => value 로 이루어진 함수라고 알고있습니다.

뭐 예를 들면 mappng(key => address) 이면 키값을 넣으면 주소를 mapping 시킨다고 알고있는데

최적화2의 끝부분에 배열의 반복 낭비를 줄이기위해 mapping을 사용하여 구조체와 매핑시킨다고 하였는데

 

mapping(uint => Student) studentInfo;

이 부분이 이해가 잘가지않습니다. 예를 들어 updateStudentById 함수의 인수값을 _studentId 에11을 넣었다고 가정하면

Student storage student = studentInfo[11]; 이 되고 매핑을 통해 mapping(11 => Student) 가 되는데 그럼

Student 구조체 배열의 11번째가 자동으로 매핑되는건가요 ?

그렇게되서 11번째 Student의 배열이 student가 되고

student.name = _name 을 통해

name이 새로 정의된다는건가요 ?

 

매핑으로 value 값에 구조체가 들어가니까 개념이 혼란스럽네요..

 

답변 1

답변을 작성해보세요.

1

안녕하세요. 

강좌에서 솔리디티 스마트 계약 이론 파트가 있는데 

1. 참조타입: 구조체

2. 참조타입: 매핑

참고하시면 도움이 될 것 같습니다. 

 

어쨌든 매핑이라는게 배열로 저장되는게 아니고 메모리상에서 키값이 있으면 매핑된 value를 불러오는 구조입니다. 

studentId가 11이다 하면 key값 11과 매핑된 Student 구조체 정보를 둥둥 떠다니는 암흑과 같은 공허한 저장소에서 불러오는 것 뿐이에요. 

 

자바의 Map이나 C#의 Dictionary를 떠올리시면 될 것 같습니다.