컨트랙트 최적화2 에서 mapping 이 이해가 잘가지않습니다.
250
작성한 질문수 2
제가 알기로는 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를 떠올리시면 될 것 같습니다.
[긴급] 전체 소스코드 파일 있었던거 같은데 어디서 받나요?
0
287
2
블록체인 강의
0
227
2
강의내용 질문입니다 메타마스크
0
320
1
truffle develop 명령 오류
0
454
0
메타마스크 창이 안뜨네요 ㅜ
0
496
2
전제 소스 코드
1
294
0
miner.stop() 오류
0
313
0
매입 실행 시 메타마스크와 연동이 안되고 창이 안뜨고 있네요
0
690
2
코드가 다운받아지지 않습니다.
0
283
1
git에 올리신 자료 관련
0
350
2
geth rpc 에러입니다.
0
574
2
수업 자료
1
306
1
truffle 버전
2
264
0
Geth의 버전이 업데이트 되면서 실행되지 않았습니다. 의 해결법 (nodestart)
1
408
1
TypeError: Contracts.compile is not a function / powershell에 migrate 시 오류발생
0
396
1
./nodestrart.cmd
0
293
1
truffle migrate 실행 시 오류
0
276
0
nodestart.cmd 파일 실행시 오류
0
788
1
필드 초기화 질문
0
234
0
truffle 이렇다는데,, 업데이트 하게되면 강의를 들을수 있나요..?
0
228
0
puppeth 명령어 실행이 안됩니다.
0
468
1
truffle init 시 에러
0
219
0
nodestart 질문
0
503
1
메타마스크 질문
0
190
0





