표준 라이브러리와 런타임

컬렉션 연산

Array, Map, Set에서 안전한 조회, 순서 있는 스냅샷, 새 값 변환, 명시적 변경을 고릅니다.

자료에 던질 질문에 맞춰 컬렉션을 고르세요. Array<T>는 위치를 보존하고, Map<K, V>는 고유한 키와 값을 연결하며, Set<T>은 중복 없는 원소를 보관합니다. 각 메서드는 호스트 컨테이너의 우연한 동작이 아니라 이 역할을 지킵니다.

작업에 맞는 연산 고르기

하려는 일권장 기능결과와 위험
없을 수도 있는 배열 위치 읽기items.get(index)Option<T>이며 위치가 없어도 실행 오류가 나지 않음
배열 위치가 반드시 있어야 한다고 요구items[index]T이며 잘못된 인덱스는 실행 오류
없을 수도 있는 맵 키 찾기values.get(key)Option<V>
맵 키가 없을 때 기본값 사용values.getOr(key, default)V
집합에 값이 있는지 확인values.contains(value)bool
이후 변경과 분리된 맵 순서 확인keys, values, entries삽입 순서를 복사한 스냅샷
변환된 컬렉션 만들기map, filter, sorted, 집합 대수새 컬렉션
기존 컬렉션 변경let mut 대상의 문서화된 변경 메서드제자리 변경

Array, Map, Set 함께 사용하기

TOPAZ
let tasks = ["draft", "check", "ship"]
let selected = tasks.get(1)

let mut scores: Map<string, int> = Map.new()
scores.insert("ada", 10)
scores.insert("lin", 12)

let mut labels = Set.of("docs")
labels.add("tests")

print("{selected}:{scores.get("lin")}:{scores.keys}:{labels.toArray()}")
출력
Some(check):Some(12):[ada, lin]:[docs, tests]

두 조회는 값이 없을 수도 있으므로 Some을 반환합니다. scores.keyslabels.toArray()는 삽입 순서를 유지합니다. 나중에 scoreslabels를 바꾸어도 이미 얻은 스냅샷은 변하지 않습니다.

안전한 조회, 변경, 실행 오류

Array의 get, indexOf, pop, removeAtOption을 반환합니다. popremoveAt은 대상도 바꾸므로 수신자 루트가 let mut이어야 합니다. slice는 반열린 범위를 가능한 범위로 맞춘 새 배열을 반환합니다. 반면 직접 인덱싱과 잘못된 위치의 insert는 계약 위반이므로 실행 오류가 납니다.

Map의 getremoveOption, containsKeybool을 반환합니다. insert, clear, update는 대상을 바꿉니다. mapValuesfilter는 남은 키의 순서를 유지한 새 맵을 반환합니다.

Set의 containsremovebool을 반환합니다. add, remove, clear는 대상을 바꾸고, union, intersection, difference는 정해진 순서의 새 집합을 반환합니다.

핵심 Array, Map, Set 연산에는 Result를 반환하는 메서드가 없습니다. 복구 가능한 외부 실패는 값을 만든 파서, 디코더, 파일 같은 작업에 속합니다. 그 Result를 처리하거나 전달한 뒤 컬렉션 연산을 적용하세요.

흔한 수정: x in map은 키 포함 여부가 아닙니다. map.containsKey(x) 또는 x in map.keys를 사용하세요. 문자열은 배열이 아니며 .length가 없습니다. 스칼라 수가 필요하면 text.scalars().length를 사용합니다.

정확한 경계

  • Map 키와 Set 원소는 재귀적으로 키로 사용할 수 있는 타입이어야 하며, 잘못된 타입은 정적으로 거부됩니다.
  • 불변 바인딩을 통해 변경하면 정적 진단이 나옵니다.
  • 기존 맵 값을 갱신하면 위치가 유지되고, 삭제 후 다시 넣으면 맨 뒤로 이동합니다.
  • Map과 Set은 메서드를 사용한다고 범용 동등성을 얻지 않습니다.
  • 콜백은 컬렉션에 명시된 순회 순서대로 호출됩니다.

컬렉션과 컴프리헨션, Null·Option·결과·실행 오류, 표준 라이브러리 개요로 이어서 살펴보세요.