4

この単純なコードが機能しない理由を突き止めようとして、過去 30 分間、頭を壁にぶつけていました。少なくとも 1 つのコマンド ライン引数が指定されているかどうかを確認するだけです。

(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 に答える