function - Clojure:在函数列表上的单个值上运行映射
问题描述
假设我有 2 个函数 add1 和 sub1,定义如下。从这些函数中,我创建了一个向量 funclist。
(defn add1
[x]
(+ x 1))
(defn sub1
[x]
(- x 1))
(def funclist (vec '(add1 sub1)))
假设现在在这个函数列表中,我想运行如下地图
(map #(% 3) funclist)
这给了我
=> (nil nil)
我期待着(4 2)...
。我究竟做错了什么?
我是一个完整的 Clojure 菜鸟……仅供参考
-安倍
解决方案
您将函数转换为带有'
.
(map #(type %) funclist) ;; => (clojure.lang.Symbol clojure.lang.Symbol)
然而,符号也是功能。它们可用于查找get
. 因此nil
结果:
('inc 42)
; → nil
改变
(def funclist (vec '(add1 sub1)))
至
(def funclist (vector add1 sub1)) ;; or [add1 sub1]
它会起作用。
(map #(% 3) funclist) ;;=> (4 2)
推荐阅读
- spring - Jhipster - JDL 工作室 - 与用户的关系
- matlab - 如何在 ode 函数中使用时间序列(例如)中的数据?
- ruby-on-rails - 在嵌套的 Postgresql JSONB 列中搜索
- vue.js - 如何在 vuetify 上的上传文件中使用 formdata?
- python-3.x - 测试与网络驱动器的连接
- laravel - 获取最后 N 个条目并按升序排列
- powershell - TeamCity BuildAgent 看不到网络驱动器
- amazon-web-services - AWS 如何将 VPC 接口终端节点关联到另一个 VPC 中的特定 NLB
- jquery - 检查 Array 中的多个值并在 html 中附加第三个值
- laravel-dusk - Laravel Dusk:迁移和种子测试数据库一次