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

Clojure中如何用pprint打印函数返回结果?调用函数无输出怎么处理?

在Clojure中用pprint打印函数执行结果的正确姿势

嘿,刚好踩过类似的坑,我来给你捋清楚!

首先得抓住两个核心点:pprint的正确引入方式,以及你要传给pprint的是函数执行后的结果,而非函数本身。

第一步:先加载pprint工具

pprint是Clojure标准库clojure.pprint里的功能,所以得先把它加载进来,常用两种方式:

  • 用require给它起个别名(推荐,避免命名冲突):
    (require '[clojure.pprint :as pp])
    
    之后就用pp/pprint来调用它。
  • 直接use加载,这样可以直接用pprint:
    (use 'clojure.pprint)
    

解决你的核心问题:为什么没打印出3?

你写的代码(defn my-func [] (+ 1 2)) (pprint my-func)里,my-func是函数对象本身,pprint会输出这个函数的元信息,而不是它执行后的计算结果。要拿到3,你需要调用这个函数——在Clojure里调用函数就是把函数名放进括号里,也就是(my-func)。

修正后的代码应该是这样:

;; 先引入pprint
(require '[clojure.pprint :as pp])

(defn my-func [] (+ 1 2))
;; 调用函数,把返回值传给pprint
(pp/pprint (my-func))

运行这段代码,你就能看到输出的3了!

额外小技巧:pprint的优势场景

如果你的函数返回复杂数据结构(比如嵌套的map、多层list),pprint会自动帮你格式化排版,比直接打印可读性高太多。比如:

(defn get-user-profile []
  {:username "zengod"
   :stats {:posts 15
           :likes 234}
   :tags ["clojure" "functional-programming"]})

(pp/pprint (get-user-profile))

输出会是整齐易读的格式:

{:username "zengod",
 :stats {:posts 15,
         :likes 234},
 :tags ["clojure" "functional-programming"]}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 14:07:30