请在 2024 Clojure 状态调查问卷! 分享您的想法。

欢迎!有关如何使用本页面,请参阅 关于页面 以获取更多信息。

0
ClojureScript
鞘�.contest/test 不接受 Var,这使得它与 Clojure 不一致

Clojure:(test #'foo)
实际 CLJS:(test foo)
预期 CLJS:(test #'foo)

Clojure 示例

```
$ clj
Clojure 1.9.0
user=> (defn ^{:test #(assert false)} foo [] nil)
#'user/foo
user=> (test #'foo)
断言错误 AssertionError Assert failed: false  user/fn--145 (NO_SOURCE_FILE:1)
```

CLJS 示例

```
$ clj -m cljs.main -r
ClojureScript 1.10.439
鞘�.user=> (defn ^{:test #(assert false)} foo [] nil)
#'鞘�.user/foo
鞘�.user=> (test #'foo)
:no-test

鞘�.user=> (test foo)
错误:断言失败:false

鞘�.user=> ((:test (meta #'foo)))
错误:断言失败:false
```

3 个答案

0

评论由: shaunlebron

测试了这个补丁。得到预期结果

0

评论由: dnolen

我相当肯定这个补丁必须更加保守。只有在你有 IMeta 的情况下调用 meta,否则回退到旧的行为。

0
参考资料:https://clojure.atlassian.net/browse/CLJS-2978 (由 shaunlebron 报告)
...