Clojure中简单的if-else分支逻辑

Jac*_*and 4 clojure

在过去的30分钟里,我一直在撞墙,试图弄清楚为什么这个简单的代码不起作用.它只是检查是否至少指定了一个命令行参数.

(defn check_args []
    (if (first *command-line-args*)
        println "value is not nil"
        println "value is nil"))

(check_args)
Run Code Online (Sandbox Code Playgroud)

当我运行代码时,我最终得到一个运行时异常,它说:

java.lang.RuntimeException: Too many arguments to if
Run Code Online (Sandbox Code Playgroud)

我确信这很简单,但对于我的生活,我无法弄清楚问题出在哪里.从序列中拉出第一个项目的代码返回序列中的第一个项目,如果不存在则返回nil,因此它看起来很简单.

mis*_*off 8

你失去了括号 - 常见的错误.

试试这个

(defn check_args []
    (if (first *command-line-args*)
        (println "value is not nil")
        (println "value is nil")))
Run Code Online (Sandbox Code Playgroud)