【问题标题】:How can I call a function in clojure and get a result?如何在 clojure 中调用函数并获得结果?
【发布时间】:2016-11-07 16:15:37
【问题描述】:

我正在尝试使用 Clojure 实现亚马逊 aws 绑定,以便我可以通过发送 isbn 来搜索一本书并获取它的 xml 报告。然后我试图从报告中检索销售排名和书名。这是我想要使用的:https://github.com/FreeAgent/clj-amazon

我没有使用 REPL,而是在 src 文件夹中创建了一个 core2.clj 并将以下代码添加到其中:

(ns clj_amazon.core2
(:use clj-amazon.core)
(:use clj-amazon.product-advertising)
(:gen-class))

(defn -main [& args]

(def ACCESS-KEY "my access code")

(def SECRET-KEY "my secret key" )

(def ASSOCIATE-ID "my id")

(def gibson-opus-search (with-signer (ACCESS-KEY, SECRET-KEY) (item-search :search-index "Books", :keywords "Neuromancer", :associate-tag ASSOCIATE-ID,    :condition "New")))

(gibson-opus-search)

)

如果我删除

(gibson-opus-search) 

并在命令行中运行“lein run”,我没有收到任何错误。我有正确的访问密钥/密钥,而且代码似乎工作正常。但我也没有打印任何报告。我是 Clojure 的新手,所以我不明白接下来应该做什么。我试图用

调用该函数
(gibson-opus-search)

,但随后我收到此错误:传递给 persistentarraymap 的 args(0) 数量错误。我该如何解决这个问题?

【问题讨论】:

  • 你想做什么?您期待什么结果?

标签: clojure


【解决方案1】:

您将 gibson-opus-search 定义为 def,用于分配值,而不是定义函数。您需要使用 defn 定义它,然后使用正确数量的参数调用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-24
    • 2020-06-26
    • 2022-12-06
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    • 2020-10-05
    • 1970-01-01
    相关资源
    最近更新 更多