본문으로 건너뛰기
토파즈6.0 · 출시 전
다운로드 →

문서 검색

명세 6.0

방향키로 결과를 고르고 Enter를 눌러 여세요.

API 이름, 진단 번호, 규칙 또는 프로젝트 주제를 입력하세요.

    라이브러리 · 컬렉션

    Map.get for K, V

    Look up a key and represent its absence with Option.

    get(k: K) -> Option<V>
    수신자
    Map<K, V>
    최소 인자 수
    1
    최대 인자 수
    1

    Declaration and parameters

    링크

    사용 조건

    기본 포함 · 예

    These types are provided by the language. No module import is required.

    The declarations below describe the standard operations on built-in values.

    수신자

    Map<K, V>

    매개변수 제약

    Map<K, V>.get(k) accepts a key of type K and returns Option<V>. A present key produces Some(value), and an absent key produces None(). Lookup does not insert an entry.

    Use map.get(key) ?? fallback to supply a value for an absent key. Evaluate the receiver and key once, then perform the lookup once. A present value skips the fallback. An absent key evaluates the fallback once.

    The fallback must be compatible with V. A stored Option or nullable value remains the payload of a present key. Its inner None() or null does not make that key absent.

    Map.getOr is absent. Its former eager default evaluation is expressed with ordinary bindings when those effects are needed.

    To preserve eager effects, bind the receiver, key, and default in that order. Perform receiver.get(key) ?? default after those bindings. This preserves default evaluation before lookup, including effects that change the map.

    결과

    The declared result type is Option<V>.

    효과

    실패

    Result and effects

    링크

    A present key produces Some(value), and an absent key produces None(). The lookup does not insert an entry. Apply ?? to supply a fallback when the key is absent.

    Why

    링크

    Returning Option gives Map lookup the same absence and fallback rules as other optional values.

    Related entries

    링크

    Collections →

    Use Map.get with optional fallback

    링크
    규칙topaz.stdlib.contract.map-get-fallback.rule

    Use Map.get with optional fallback

    Map<K, V>.get(k) accepts a key of type K and returns Option<V>. A present key produces Some(value), and an absent key produces None(). Lookup does not insert an entry.

    Use map.get(key) ?? fallback to supply a value for an absent key. Evaluate the receiver and key once, then perform the lookup once. A present value skips the fallback. An absent key evaluates the fallback once.

    The fallback must be compatible with V. A stored Option or nullable value remains the payload of a present key. Its inner None() or null does not make that key absent.

    Map.getOr is absent. Its former eager default evaluation is expressed with ordinary bindings when those effects are needed.

    To preserve eager effects, bind the receiver, key, and default in that order. Perform receiver.get(key) ?? default after those bindings. This preserves default evaluation before lookup, including effects that change the map.

    이유

    Map lookup represents absence with Option. The shared coalescing operator supplies defaults with one evaluation rule. Explicit bindings preserve eager effects without a second lookup API.

    Evaluate a fallback for a missing key

    링크
    main.tpzEvaluate a fallback for a missing key플레이그라운드 열기 →
    1. import std.io
    2. function fallback() -> int {
    3. io.writeLine("fallback")
    4. 9
    5. }
    6. let values: Map<string, int> = map { "present": 7 }
    7. let present = values.get("present") ?? fallback()
    8. io.writeLine("{present}")
    9. let missing = values.get("missing") ?? fallback()
    10. io.writeLine("{missing}")
    기대 출력종료 코드 0
    7
    fallback
    9
    
    $ topaz run main.tpz · 대상 제품 5.21.3
    기대 결과

    기대 결과

    실행을 마칩니다. 종료 코드 0.

    기대 표준 출력
    1. 7
    2. fallback
    3. 9

    Reject the removed Map.getOr member

    링크
    main.tpzReject the removed Map.getOr member플레이그라운드 열기 →
    1. let m: Map<string, int> = map { "present": 7 }
    2. m.getOr("present", 9)
    기대 출력0이 아닌 종료 코드
    표준 출력 없음.
    $ topaz check main.tpz --format json · 대상 제품 5.21.3
    기대 결과

    기대 결과

    거절 단계 check. 종료 코드가 0이 아닙니다.

    Supply the default with get and ??

    링크
    main.tpzSupply the default with get and ??플레이그라운드 열기 →
    1. let m: Map<string, int> = map { "present": 7 }
    2. m.get("present") ?? 9
    기대 출력종료 코드 0
    표준 출력 없음.
    $ topaz check main.tpz --format json · 대상 제품 5.21.3
    기대 결과

    기대 결과

    검사가 프로그램을 받아들입니다. 종료 코드 0.

    Preserve eager default effects with ordered bindings

    링크
    main.tpzPreserve eager default effects with ordered bindings플레이그라운드 열기 →
    1. import std.io
    2. function makeMap() -> Map<string, int> {
    3. io.writeLine("receiver")
    4. map { "present": 7 }
    5. }
    6. function makeKey() -> string {
    7. io.writeLine("key")
    8. "present"
    9. }
    10. function makeFallback() -> int {
    11. io.writeLine("fallback")
    12. 9
    13. }
    14. let receiver = makeMap()
    15. let key = makeKey()
    16. let fallback = makeFallback()
    17. let value = receiver.get(key) ?? fallback
    18. io.writeLine("{value}")
    기대 출력종료 코드 0
    receiver
    key
    fallback
    7
    
    $ topaz run main.tpz · 대상 제품 5.21.3
    기대 결과

    기대 결과

    실행을 마칩니다. 종료 코드 0.

    기대 표준 출력
    1. receiver
    2. key
    3. fallback
    4. 7

    Diagnostics

    링크

    Unknown member or field →

    메뉴

    다운로드 →