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.
Связанное правило · Use Map.get with optional fallback →Результат
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
СсылкаUse Map.get with optional fallback
Ссылка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
Ссылкаimport std.iofunction fallback() -> int {io.writeLine("fallback")9}let values: Map<string, int> = map { "present": 7 }let present = values.get("present") ?? fallback()io.writeLine("{present}")let missing = values.get("missing") ?? fallback()io.writeLine("{missing}")
7
fallback
9
Ожидаемый результат
Ожидаемый результат
Выполнение завершается. Код завершения 0.
7fallback9
Reject the removed Map.getOr member
Ссылкаlet m: Map<string, int> = map { "present": 7 }m.getOr("present", 9)
Нет стандартного вывода.Ожидаемый результат
Ожидаемый результат
Этап отклонения check. Ненулевой код завершения.
stdlib-removed-member at
main.tpz:2:3
Supply the default with get and ??
Ссылкаlet m: Map<string, int> = map { "present": 7 }m.get("present") ?? 9
Нет стандартного вывода.Ожидаемый результат
Ожидаемый результат
Проверка принимает программу. Код завершения 0.
Preserve eager default effects with ordered bindings
Ссылкаimport std.iofunction makeMap() -> Map<string, int> {io.writeLine("receiver")map { "present": 7 }}function makeKey() -> string {io.writeLine("key")"present"}function makeFallback() -> int {io.writeLine("fallback")9}let receiver = makeMap()let key = makeKey()let fallback = makeFallback()let value = receiver.get(key) ?? fallbackio.writeLine("{value}")
receiver
key
fallback
7
Ожидаемый результат
Ожидаемый результат
Выполнение завершается. Код завершения 0.
receiverkeyfallback7