Documentation Index
Fetch the complete documentation index at: https://fluxon.tabooproject.org/llms.txt
Use this file to discover all available pages before exploring further.
Map 扩展函数通过上下文调用语法 :: 使用,提供键值对集合操作能力。
基础属性
| 方法 | 说明 |
|---|
size() | 返回映射中键值对的数量。 |
isEmpty() | 检查映射是否为空。 |
[a: 1, b: 2] :: size() # => 2
[:] :: isEmpty() # => true(空映射)
[a: 1] :: isEmpty() # => false
键值访问
| 方法 | 说明 |
|---|
get(key) | 获取指定键的值,不存在返回 null。 |
getOrDefault(key, default) | 获取值,不存在则返回默认值。 |
keys() | 返回所有键的集合。 |
values() | 返回所有值的集合。 |
entries() | 返回所有键值对的集合。 |
map = [name: "Alice", age: 30]
map :: get("name") # => "Alice"
map :: get("email") # => null
map :: getOrDefault("email", "N/A") # => "N/A"
map :: keys() # => ["name", "age"]
map :: values() # => ["Alice", 30]
也可以使用索引访问语法:
map = [a: 1, b: 2]
&map["a"] # => 1
&map["c"] # => null
元素修改(可变映射)
以下方法仅适用于可变映射:
| 方法 | 说明 |
|---|
put(key, value) | 添加或更新键值对,返回旧值(如有)。 |
putAll(otherMap) | 批量添加键值对。 |
remove(key) | 移除指定键,返回被移除的值。 |
clear() | 清空映射。 |
map = mutableMap([a: 1])
map :: put("b", 2) # map = [a: 1, b: 2]
map :: put("a", 10) # => 1(返回旧值),map = [a: 10, b: 2]
map :: remove("b") # => 2, map = [a: 10]
map :: clear() # map = [:]
包含检查
| 方法 | 说明 |
|---|
containsKey(key) | 检查是否包含指定键。 |
containsValue(value) | 检查是否包含指定值。 |
map = [a: 1, b: 2]
map :: containsKey("a") # => true
map :: containsKey("c") # => false
map :: containsValue(1) # => true
map :: containsValue(3) # => false
遍历与转换
| 方法 | 说明 |
|---|
forEach(action) | 对每个键值对执行操作。 |
map(transform) | 转换每个值,返回新映射。 |
mapKeys(transform) | 转换每个键,返回新映射。 |
filter(predicate) | 过滤键值对,返回满足条件的新映射。 |
filterKeys(predicate) | 按键过滤。 |
filterValues(predicate) | 按值过滤。 |
map = [a: 1, b: 2, c: 3]
# forEach 遍历
map :: forEach(fn(k, v) { print(&k + ": " + &v) })
# map 转换值
map :: map(fn(k, v) { &v * 2 }) # => [a: 2, b: 4, c: 6]
# filter 过滤
map :: filter(fn(k, v) { &v > 1 }) # => [b: 2, c: 3]
map :: filterValues(fn(v) { &v > 1 }) # => [b: 2, c: 3]
使用 for 循环遍历
映射可以直接用 for 循环遍历:
map = [name: "Alice", age: 30]
# 遍历键值对
for (key, value) in &map {
print(&key + " = " + &value)
}
# 只遍历键
for key in map :: keys() {
print(&key)
}
# 只遍历值
for value in map :: values() {
print(&value)
}
合并与转换
| 方法 | 说明 |
|---|
plus(otherMap) | 合并两个映射,返回新映射(后者覆盖前者)。 |
minus(key) | 返回移除指定键后的新映射。 |
minus(keys) | 返回移除多个键后的新映射。 |
toList() | 转换为键值对列表。 |
map1 = [a: 1, b: 2]
map2 = [b: 20, c: 3]
map1 :: plus(&map2) # => [a: 1, b: 20, c: 3]
map1 :: minus("a") # => [b: 2]
map1 :: minus(["a", "b"]) # => [:]
map1 :: toList() # => [["a", 1], ["b", 2]]
默认值
| 方法 | 说明 |
|---|
getOrPut(key, defaultValue) | 获取值,不存在则添加默认值并返回(仅可变映射)。 |
map = mutableMap([a: 1])
map :: getOrPut("a", 10) # => 1(已存在)
map :: getOrPut("b", 2) # => 2(新添加)
# map = [a: 1, b: 2]
相关链接