2024 Clojure 状态调查中分享您的想法!

欢迎!有关如何工作的更多信息,请参阅关于页面。

+8
协议
我本以为即使通过元数据提供协议实现也能使`satisfies?`工作,但这似乎并不正确。


(defprotocol Foo :extend-via-metadata true (foo [x]))
(foo (with-meta [42] {`foo (fn [x] :boo)}))
;; => :boo

;; 但`satisfies?`不起作用
(satisfies? Foo (with-meta [42] {`foo (fn [x] :boo)}))
;; => false


*补丁*:0001-CLJ-2426-fix-satisfies-for-new-instance-based-protoc.patch
昨天遇到了这个问题。

2 答案

0

评论由:alexmiller 提供

为了性能,是否最好将元数据检查放在第二位而不是第一位?或者它实际上更快?

0
...