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
相关产品推荐
相关产品推荐

