clojure some函数

作者: admin 日期: 2017-12-27 19:22:44 人气: - 评论: 0

some函数可以从集合中找到满足条件的第一个数据


some支持接收一个集合作为参数

(some #{2 7 6} [5 6 7 8])

=> 6


也支持接收一个函数作为条件

(some #(when (even? %) %) [5 6 7 8])

=> 6


其实在clojure里面集合也是一个函数,filter和map等操作同样支持集合作为参数

(filter #{2 7 6} [5 6 7 8])

=> (6 7)


(map #{2 7 6} [5 6 7 8])

=> (nil 6 7 nil)


同样的我们发现map操作也支持用map作为参数,所以在clojure中map也是一个函数

(map {:a 2 :b 7 :c 6} [:a 6 7 8])

=> (2 nil nil nil)


试试列表和向量

(map (list 6 7) [:a 6 7 8])

ClassCastException clojure.lang.PersistentList cannot be cast to clojure.lang.IFn  clojure.core/map/fn--4785 (core.clj:2644)


(map (vector 6 7) [:a 6 7 8])

IllegalArgumentException Key must be integer  clojure.lang.APersistentVector.invoke (APersistentVector.java:292)



报错了,难道说列表和向量在clojure中不是函数?



相关内容

发表评论
更多 网友评论0 条评论)
暂无评论

Copyright © 2012-2014 我的代码板 Inc. 保留所有权利。

页面耗时0.0247秒, 内存占用1.82 MB, 访问数据库13次

闽ICP备15009223号-1