-
카테고리
-
세부 분야
블록체인
-
해결 여부
미해결
컨트랙트 최적화2 에서 mapping 이 이해가 잘가지않습니다.
19.08.08 16:57 작성 조회수 154
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
SEJONG IT EDU
지식공유자2019.08.09
안녕하세요.
강좌에서 솔리디티 스마트 계약 이론 파트가 있는데
1. 참조타입: 구조체
2. 참조타입: 매핑
참고하시면 도움이 될 것 같습니다.
어쨌든 매핑이라는게 배열로 저장되는게 아니고 메모리상에서 키값이 있으면 매핑된 value를 불러오는 구조입니다.
studentId가 11이다 하면 key값 11과 매핑된 Student 구조체 정보를 둥둥 떠다니는 암흑과 같은 공허한 저장소에서 불러오는 것 뿐이에요.
자바의 Map이나 C#의 Dictionary를 떠올리시면 될 것 같습니다.
답변 1