gpt4 book ai didi

clojure - 将 clojure.contrib.strint 与其他地方定义的字符串一起使用

转载 作者:行者123 更新时间:2023-12-02 20:58:32 25 4
gpt4 key购买 nike

我是 clojure 新手,我正在尝试使用 clojure.contrib.strint 构建 URL。例如,我可以使用它进行谷歌搜索:

(def search_base_url "http://www.google.com/search?hl=en&q=~{query}")

(defn search_url [search_term]
(let [query (.replaceAll search_term "\\s+" "+")]
(<< search_base_url)))

但这给了我编译器错误:
错误:java.lang.RuntimeException:java.lang.RuntimeException:java.lang.IllegalArgumentException:找不到匹配的方法:类clojure.lang.Symbol的indexOf。
我认为 strint 使用了 indexOf 几次,所以不知怎的,我似乎没有给 << 函数它想要的东西。

我也尝试过(def search_base_url '(<< "http://myurl.com?~{params}")) ,但是我不知道如何在我的 let 上下文中评估该表单。我可以将字符串放入 search_url 函数中,但这感觉不如我,我希望这个答案能帮助我更好地理解 clojure。

谢谢

最佳答案

问题是,“<<”宏需要一个字符串,而不是计算结果为字符串的东西。也就是说,它尝试对名为“search_base_url”的符号调用 .indexOf,而不是其值。

解决这个问题的一种方法是:

(defn search-url [search-term]
(let [query (.replaceAll search-term "\\s+" "+")]
(<< "http://www.google.com/search?hl=en&q=~{query}")))

关于clojure - 将 clojure.contrib.strint 与其他地方定义的字符串一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7032740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com