From b9870a4c8caf17f40194883a0815d159b3bf5feb Mon Sep 17 00:00:00 2001 From: Alexander Medvednikov Date: Tue, 19 Jan 2021 06:11:18 +0100 Subject: [PATCH] doc: document the new `m[key] or{}` --- doc/docs.md | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/doc/docs.md b/doc/docs.md index ec5507c7d7..db64ff0cbe 100644 --- a/doc/docs.md +++ b/doc/docs.md @@ -711,7 +711,7 @@ users.sort(a.name > b.name) // reverse sort by User.name string field ### Maps ```v -mut m := map[string]int{} // Only maps with string keys are allowed for now +mut m := map[string]int{} m['one'] = 1 m['two'] = 2 println(m['one']) // "1" @@ -720,11 +720,31 @@ println('bad_key' in m) // Use `in` to detect whether such key exists m.delete('two') // Short syntax numbers := { - 'one': 1 - 'two': 2 + 1: 'two' + 2: 'three' } ``` +If a key is not found, an empty value is returned by default: + +``` +val := m['bad_key'] +println(val) // 0 +``` + +However it's also possible to use an `or {}` block to handle missing keys: + +``` +val := m['bad_key'] or { println('key not found') } +``` + +The same optional check applies to arrays: + +``` +val := arr[large_index] or { println('out of bounds') } +``` + + ## Module imports For information about creating a module, see [Modules](#modules).