gpt4 book ai didi

clojure - Clojure 中 if 语句后连续运行两个命令

转载 作者:行者123 更新时间:2023-12-03 01:45:13 25 4
gpt4 key购买 nike

为什么以下 Clojure 程序会抛出 NullPointerException?

user=> (defn x []  
"Do two things if the expression is true."
(if true ((println "first expr") (println "second expr")) false))

user=> (x)
first expr
java.lang.NullPointerException (NO_SOURCE_FILE:0)
second expr

这是我的实际用例的简化版本,我想在返回 map 之前执行三个语句(从数据库中提取值) - {:status 200, :body "Hello World"} 分支内部。

最佳答案

它试图将第一个 println 的结果视为调用第二个 println 函数的函数。

您需要一个 do .

(defn x []  
"Do two things if the expression is true."
(if true (do (println "first expr") (println "second expr")) false))

(x)

do 特殊形式(CL 中为 progn,Scheme 中为 begin)按顺序执行每个参数并返回最后一个参数的结果。

关于clojure - Clojure 中 if 语句后连续运行两个命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7549820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com