Clojure 集合操作与数据结构详解
1. 插值与数据拟合
对于已知的 x 坐标,我们可以找到适合已有数据的 y 值。示例代码如下:
(def f (interpolate [[0 0] [10 10] [15 5]]))
;= #'user/f
(map f [2 10 12])
;= (2 10 8)
2. 简洁的集合访问
在集合操作中,访问值是最常见的操作,尤其是对于支持关联抽象的集合。Clojure 提供了更简洁的方式来访问集合中的值。
2.1 集合作为函数
Clojure 集合本身可以作为函数来查找与提供的键或索引关联的值。例如:
(get [:a :b :c] 2) ;= :c
([:a :b :c] 2) ;= :c
(get {:a 5 :b 6} :b) ;= 6
({:a 5 :b 6} :b) ;= 6
(get {:a 5 :b 6} :c 7) ;= 7
({:a 5 :b 6} :c 7) ;= 7
(get #{1 2 3} 3) ;= 3
(#{1 2 3} 3) ;= 3
需要注意的是,向量和集合在查找时只接受单个值/索引,不支持默认值。并且向量查找时提供的索引必须在向量范围内,否则会抛出 IndexOutOfBoundsException 异常。
| 操作 |
|---|
超级会员免费看
订阅专栏 解锁全文
31

被折叠的 条评论
为什么被折叠?



