function - Clojure 中的列表或向量如何用于存储和使用函数?
问题描述
这是我在 REPL 中尝试过的。
(def mstuffs [(fn [n] (* 1 n)) (fn [n] (* 1 n))])
((mstuffs first) 2)
这是我得到的错误
; Execution error (IllegalArgumentException) at nrepl.middleware.interruptible-eval/evaluate$fn$fn (interruptible_eval.clj:87).
; Key must be integer
我究竟做错了什么?
解决方案
clojure 中的向量是从索引到相应项目的函数,例如
([:foo :bar :baz] 1)
=> :bar
(mstuffs first)
尝试mstuffs
使用参数索引向量也是如此first
。由于first
是一个函数而不是整数,因此您会得到结果异常。看起来你的意思是调用向量中的第一个函数,所以应该使用
((first mstuffs) 2)
推荐阅读
- java - 突然彻底崩溃:找不到符号、ClassNotFoundException(Java、NetBeans)
- file - 是否可以在没有外部库/SDK 的情况下在 Visual Basic 中操作 pdf 文件?
- php - PHP 提供的十六进制值与在线工具不同
- android - 堆叠的全角按钮
- php - 当前日期最晚
- php - PHP yield 抑制函数中的回显
- java - Java:是否不鼓励孩子凌驾于父母之上?
- javascript - 节点是否内置了对 Websockets 的支持?
- java - Java 11 没有设置 Java 环境变量
- ansible - 包括 ansible playbook 中的子角色?