4

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

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

(check_args)

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

java.lang.RuntimeException: Too many arguments to if

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

4

1 回答 1

8

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

试试这个

(defn check_args []
    (if (first *command-line-args*)
        (println "value is not nil")
        (println "value is nil")))
于 2012-11-15T13:44:34.810 回答