Documentation
Bop language guide

Dictionaries

Dictionaries๐Ÿ”—

Dictionaries (dicts) are key-value stores. Keys are always strings; values can be any type.

Creating dictionaries๐Ÿ”—

let person = {"name": "Alice", "age": 30, "active": true}
let empty = {}

Accessing values๐Ÿ”—

Use bracket notation with a string key:

let name = person["name"]     // "Alice"
let age = person["age"]       // 30

Accessing a missing key returns none (no error):

let email = person["email"]
print(email)    // none

if email.is_none() { print("no email on file") }

Two caveats:

  • A key whose value is explicitly none is present โ€” d.has(k) returns true for it, even though d[k] and d["absent_key"] are both none. Use d.has(k) when you need to distinguish โ€œunsetโ€ from โ€œset to noneโ€.
  • If you want a read to fail on a missing key, check d.has(key) first and raise explicitly โ€” d[key] itself always succeeds.

Modifying values๐Ÿ”—

person["age"] = 31             // update existing key
person["email"] = "[email protected]"   // add new entry

Methods๐Ÿ”—

MethodReturnsDescription
d.len()intNumber of entries
d.keys()arrayArray of all keys
d.values()arrayArray of all values
d.has(key)boolWhether the key exists

Plus the universal d.type(), d.to_str(), d.inspect().

Practical examples๐Ÿ”—

Counting occurrences๐Ÿ”—

let words = ["apple", "banana", "apple", "cherry", "banana", "apple"]
let counts = {}
for word in words {
  if counts.has(word) {
    counts[word] += 1
  } else {
    counts[word] = 1
  }
}

for key in counts {
  print(key + ": " + counts[key].to_str())
}

Storing structured data๐Ÿ”—

let point = {"x": 10, "y": 20}
let x = point["x"].to_str()
let y = point["y"].to_str()
print("Position: ({x}, {y})")

Iterating over entries๐Ÿ”—

let config = {"width": 800, "height": 600, "title": "My App"}
for key in config {
  let val = config[key].to_str()
  print(key + ": " + val)
}

Checking for a key before using it๐Ÿ”—

let settings = {"volume": 80}

if settings.has("volume") {
  let v = settings["volume"].to_str()
  print("Volume is {v}")
} else {
  print("Using default volume")
}
Found something unclear?Edit this page on GitHub
Documentation

Search Bop

Start typing to search the guide and reference.