gpt4 book ai didi

clojurescript - with-redefs 是否需要多个参数?

转载 作者:行者123 更新时间:2023-12-05 01:34:23 25 4
gpt4 key购买 nike

我执行了以下代码(摘自真实用例),并期望得到“Fake 2 a b”:

(defn real-func  
([a] (real-func a "S"))
([a b] (real-func a b "S"))
([a b c] (println "Real " a b c)))

(defn fake-func
([a b] (println "Fake 2" a b)))

(deftest blah-test
(testing "blah blah"
(with-redefs [real-func fake-func] (real-func "a" "b"))))

但是我得到了一个错误:#object[TypeError 类型错误:videra_web.effects.graphql_test.real_func.cljs$core$IFn$_invoke$arity$2 不是函数]

奇怪的是,如果我将另一个元数(任何元数)添加到 fake-func 它会起作用:例如

(defn fake-func 
([a b] (println "Fake 2" a b))
([a b c d e] (println "Fake 5" a b c d e))
)

这看起来像是一个错误,还是有我不明白的语言功能?

最佳答案

您可能正在运行使用 :static-fns true 编译的代码,这会阻止此类事情的发生。

这在 shadow-cljs 中默认为 true,因此如果您在构建配置中使用该设置 :compiler-options {:static-fns false}

关于clojurescript - with-redefs 是否需要多个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63709716/

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