이전글
[클래리티] 5. 변수와 상수2
이전글 [클래리티] 4. 변수와 상수1이전글 [클래리티] 3. 클래리티 기본 규칙이전글 [클래리티] 2. 히로 플랫폼(Hiro Platform)히로 플랫폼(Hiro Platform) 히로 플랫폼은 스택스 스마트 컨트랙트 개
kwjdnjs.tistory.com
맵
이번 글에서는 클래리티의 맵에 대해서 알아보겠습니다.
맵은 변수와 상수처럼 데이터를 저장하는 방식 중 하나로 해시 테이블로도 불립니다. 즉, 맵은 키-값 쌍으로 저장하는 방식을 말합니다. 튜플도 키를 이용해 데이터를 저장하지만 맵은 튜플과 다르게 키 이름을 따로 입력하지 않습니다. 즉, 키-값 데이터를 연결만 하는 말 그대로 해시 테이블인 것입니다.
맵은 다음과 같이 define-map, 맵 이름, 키 타입, 값 타입으로 정의할 수 있습니다.
(define-map balances principal uint)
맵을 정의했다면 map-set을 이용해 값을 넣을 수 있습니다.
(map-set balances tx-sender u500)
다음과 같이 튜플 등 여러 타입을 이용해 값을 저장할 수 있습니다.
(map-set orders u0 {maker: tx-sender, amount: u50})
(map-set orders u1 {maker: tx-sender, amount: u120})
map-set은 이미 값이 있는 경우에도 값을 덮어씌워 저장합니다. 만약 값이 이미 존재할 경우에 값을 덮어씌우고 싶지 않다면 map-insert를 사용해야 합니다. map-insert는 이미 해당 키에 대한 값이 존재할 경우 값을 저장하지 않고 false를 반환합니다.
(map-insert scores tx-sender u100)
맵에서 특정 키의 값을 얻고 싶다면 map-get? 을 이용하면 됩니다.
(map-get? balances tx-sender)
map-get은 옵셔널 타입으로 값을 반환합니다. 만약 존재하지 않는 키에 접근하려고 한다면 none을 반환하기 때문입니다. 따라서 map-get으로 얻은 값 자체를 사용하고 싶다면 이전에 알아봤던 것처럼 옵셔널을 풀기 위한 함수인 unwrap-panic을 사용하면 됩니다.
마지막으로 맵에서 값을 지우고 싶다면 map-delete를 이용하면 됩니다.
(map-delete scores tx-sender)
참고로 맵은 키-값을 저장하는 방식이라 반복문을 사용할 수 없어 주의해야 합니다.
다음글
[클래리티] 7. 함수
이전글 [클래리티] 6. 맵이전글 [클래리티] 5. 변수와 상수2이전글 [클래리티] 4. 변수와 상수1이전글 [클래리티] 3. 클래리티 기본 규칙이전글 [클래리티] 2. 히로 플랫폼(Hiro Platform)히로 플랫폼
kwjdnjs.tistory.com
'스택스 > 클래리티' 카테고리의 다른 글
[클래리티] 8. 제어 흐름과 예외 처리 (0) | 2024.10.15 |
---|---|
[클래리티] 7. 함수 (0) | 2024.10.07 |
[클래리티] 5. 변수와 상수2 (0) | 2024.07.16 |
[클래리티] 4. 변수와 상수1 (0) | 2024.07.05 |
[클래리티] 3. 클래리티 기본 규칙 (1) | 2024.06.10 |