You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Clojure中如何用列表或vector存储使用函数?代码报错如何解决?

问题原因分析

你的代码报错核心是vector元素调用的语法顺序写反了。
Clojure中vector本身支持作为函数使用,接收的参数必须是整数类型的下标索引,你的写法(mstuffs first)是将first函数作为入参传给vectormstuffs,不符合vector作为函数的入参要求,因此抛出Key must be integer的非法参数错误。

正确写法

你可以选择两种常用写法调用存储在vector中的函数:

  • 先用first取出vector中第一个元素再调用
((first mstuffs) 2)
;; 输出结果为 2
  • 直接用vector作为索引函数,传入整数下标取出函数再调用
((mstuffs 0) 2)
;; 输出结果为 2
扩展说明

如果用List存储函数,调用逻辑完全一致,只需要适配List集合的元素获取语法即可:

;; 用List存储函数示例
(def mstuffs-list '((fn [n] (* 1 n)) (fn [n] (* 1 n))))
;; 调用第一个函数
((first mstuffs-list) 2)

内容的提问来源于stack exchange,提问作者Lee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 10:54:02