Map 模块概述
Map 模块提供了全面的键值对数据结构操作函数,支持映射的创建、查询、修改、合并和转换等功能。所有函数都采用不可变设计,返回新的映射而不修改原映射。
功能概览
功能类别 | 主要函数 | 用途 |
---|---|---|
打印输出 | pprint |
美化打印映射 |
基础操作 | len , insert , flatten |
基础数据操作 |
检查操作 | has |
检查键是否存在 |
数据获取 | get , at , items , keys , values |
获取映射数据 |
查找操作 | find , filter |
条件查找和过滤 |
修改操作 | remove , set |
映射内容修改 |
创建操作 | from_items |
从数据创建映射 |
集合运算 | union , intersect , difference , merge |
映射间运算 |
转换操作 | map |
映射转换 |
打印输出函数
pprint <map>
- 美化打印映射
- 参数:
map
(必需):Map
- 要打印的映射 - 用途:以表格形式美化显示映射数据
基础操作函数
len <map>
- 获取映射长度
- 参数:
map
(必需):Map
- 要计算长度的映射 - 返回:
Integer
- 映射中键值对的数量
insert <key> <value> <map>
- 向映射中插入键值对
- 参数:
key
(必需):String
- 键名value
(必需):Any
- 键值map
(必需):Map
- 目标映射
- 返回:
Map
- 插入键值对后的新映射
flatten <map>
- 展平嵌套映射结构
- 参数:
map
(必需):Map
- 要展平的嵌套映射 - 返回:
Map
- 展平后的映射
检查操作函数
has <key> <map>
- 检查映射是否包含指定键
- 参数:
key
(必需):String
- 要检查的键名map
(必需):Map
- 源映射
- 返回:
Boolean
- 包含键时返回 true
数据获取函数
get <path> <map|list|range>
- 使用点号路径从嵌套结构中获取值
- 参数:
path
(必需):String
- 访问路径,支持点号分隔data
(必需):Map|List|Range
- 要访问的数据结构
- 返回:
Any
- 指定路径的值
at <key> <map>
- 从映射中获取指定键的值
- 参数:
key
(必需):String
- 键名map
(必需):Map
- 源映射
- 返回:
Any
- 键对应的值 - 错误:键不存在时抛出错误
items <map>
- 获取映射的键值对列表
- 参数:
map
(必需):Map
- 源映射 - 返回:
List[List]
- 键值对列表,每个元素为 [key, value] - 示例:
Map.items({"a": 1, "b": 2})
返回[["a", 1], ["b", 2]]
keys <map>
- 获取映射的所有键
- 参数:
map
(必需):Map
- 源映射 - 返回:
List[String]
- 键名列表
values <map>
- 获取映射的所有值
- 参数:
map
(必需):Map
- 源映射 - 返回:
List[Any]
- 值列表
查找操作函数
find <predicate_fn> <map>
- 查找第一个匹配条件的键值对
- 参数:
predicate_fn
(必需):Function|Lambda
- 判断函数,接受 (key, value) 参数map
(必需):Map
- 源映射
- 返回:
List|None
- 匹配的键值对 [key, value],未找到时返回 None
filter <predicate_fn> <map>
- 按条件过滤映射
- 参数:
predicate_fn
(必需):Function|Lambda
- 过滤函数,接受 (key, value) 参数map
(必需):Map
- 源映射
- 返回:
Map
- 符合条件的键值对组成的新映射
修改操作函数
remove <key> <map>
- 从映射中移除指定键
- 参数:
key
(必需):String
- 要移除的键名map
(必需):Map
- 源映射
- 返回:
Map
- 移除键后的新映射
set <key> <value> <map>
- 设置映射中现有键的值
- 参数:
key
(必需):String
- 键名(必须已存在)value
(必需):Any
- 新值map
(必需):Map
- 源映射
- 返回:
Map
- 设置值后的新映射 - 错误:键不存在时抛出错误
创建操作函数
from_items <items>
- 从键值对列表创建映射
- 参数:
items
(必需):List[List]
- 键值对列表,每个元素为 [key, value] - 返回:
Map
- 创建的映射 - 示例:
Map.from_items([["a", 1], ["b", 2]])
返回{"a": 1, "b": 2}
集合运算函数
union <map1> <map2>
- 合并两个映射
- 参数:
map1
(必需):Map
- 第一个映射map2
(必需):Map
- 第二个映射
- 返回:
Map
- 合并后的映射(map2 的值会覆盖 map1 中相同键的值)
intersect <map1> <map2>
- 获取两个映射的交集
- 参数:
map1
(必需):Map
- 第一个映射map2
(必需):Map
- 第二个映射
- 返回:
Map
- 包含两个映射共同键的新映射
difference <map1> <map2>
- 获取两个映射的差集
- 参数:
map1
(必需):Map
- 第一个映射map2
(必需):Map
- 第二个映射
- 返回:
Map
- 包含 map1 中但不在 map2 中的键的新映射
merge <map1> <map2> [<map3> ...]
- 递归合并多个映射
- 参数:
map1
(必需):Map
- 基础映射map2
(必需):Map
- 要合并的映射map3...
(可选):Map...
- 更多要合并的映射
- 返回:
Map
- 深度合并后的映射 - 用途:对于嵌套映射,会递归合并而不是简单覆盖
转换操作函数
map <key_fn> <val_fn> <map>
- 转换映射的键和值
- 参数:
key_fn
(必需):Function|Lambda
- 键转换函数val_fn
(可选):Function|Lambda
- 值转换函数,默认为恒等函数map
(必需):Map
- 源映射
- 返回:
Map
- 转换后的新映射
使用示例
基础操作示例
# 创建和操作映射 |
集合运算示例
# 映射合并 |
函数式操作示例
# 过滤和转换 |
Notes
Map 模块提供了全面的键值对数据结构处理能力,支持函数式编程范式和不可变数据操作。所有函数都经过优化,提供一致的错误处理和类型安全。参数类型说明中,<>
表示必需参数,[]
表示可选参数,...
表示可变参数。
特别注意 set
函数只能修改已存在的键,而 insert
函数可以添加新键。
实际使用时,支持链式调用,如:
let map1 = {"a": 1, "b": 2} |
在示例中,为方便理解,仅使用了类型名称调用。