컨트랙트 최적화2 에서 mapping 이 이해가 잘가지않습니다.
241
작성한 질문수 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
240
2
블록체인 강의
0
174
2
강의내용 질문입니다 메타마스크
0
277
1
truffle develop 명령 오류
0
414
0
메타마스크 창이 안뜨네요 ㅜ
0
463
2
전제 소스 코드
1
275
0
miner.stop() 오류
0
298
0
매입 실행 시 메타마스크와 연동이 안되고 창이 안뜨고 있네요
0
654
2
코드가 다운받아지지 않습니다.
0
255
1
git에 올리신 자료 관련
0
329
2
geth rpc 에러입니다.
0
548
2
수업 자료
1
283
1
truffle 버전
2
248
0
Geth의 버전이 업데이트 되면서 실행되지 않았습니다. 의 해결법 (nodestart)
1
386
1
TypeError: Contracts.compile is not a function / powershell에 migrate 시 오류발생
0
367
1
./nodestrart.cmd
0
273
1
truffle migrate 실행 시 오류
0
254
0
nodestart.cmd 파일 실행시 오류
0
758
1
필드 초기화 질문
0
217
0
truffle 이렇다는데,, 업데이트 하게되면 강의를 들을수 있나요..?
0
212
0
puppeth 명령어 실행이 안됩니다.
0
436
1
truffle init 시 에러
0
208
0
nodestart 질문
0
487
1
메타마스크 질문
0
175
0





