【问题标题】:Simple if-else branching logic in ClojureClojure 中的简单 if-else 分支逻辑
【发布时间】:2012-11-15 13:41:40
【问题描述】:

在过去的 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,因此看起来非常简单。

【问题讨论】:

    标签: clojure


    【解决方案1】:

    括号丢失 - 常见错误。

    试试这个

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

    【讨论】:

    • 谢谢,这很有意义。对于我正在做的事情,我需要括号,因为我正在调用一个函数。如果我只是想返回字符串,我就不需要它们了。
    • 一个 do 语句通常可以将多个函数调用括起来作为 if 逻辑的一部分,因此如果某事为真,则 do 允许您完成几件事。
    猜你喜欢
    • 2011-06-24
    • 1970-01-01
    • 2012-05-17
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 2013-06-29
    • 2017-06-08
    • 1970-01-01
    相关资源
    最近更新 更多