Skip to content

09 · Data Structures

Index an optional collection

Use values?.[index] to produce nil for a nil receiver or an absent entry. A nil receiver skips evaluation of the index. Continue with ?.field to read a field only when the entry exists.

On this page

Use values?.[index] to produce nil for a nil receiver or an absent entry. A nil receiver skips evaluation of the index. Continue with ?.field to read a field only when the entry exists.

Complete example

Index an optional collection.

05-safe-index.zolo
Playground
struct User { name: str }

let users: [User]? = [User { name: "Ada" }, User { name: "Linus" }]
let selected = 1
let name = users?.[selected]?.name ?? "No selection"
let absent = users?.[10]?.name ?? "No selection"
let unavailable: [User]? = nil
let calls = 0
fn choose() -> int { calls += 1; return 0 }
let skipped = unavailable?.[choose()]?.name ?? "No data"

assert(name == "Linus")
assert(absent == "No selection")
assert(skipped == "No data")
assert(calls == 0)
let counts = #{2: 7}
assert(counts?.[2] == 7)
assert(counts?.[0] == nil)
print(name)
print(absent)
print(skipped)

Reference

Reference · Source program

zolo run examples/features/40-syntax-fourth/05-safe-index.zolo --no-cache

Global index

Find your way through Zolo

Try an idea

Start here

9 results

9 results

enespt-br