gpt4 book ai didi

clojure - 为什么记录不是函数?

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

与 map 不同,记录不是函数。为什么?

;; maps are functions of the keys
({:a 1} :a) ;; 1
({:a 1}) ;; error
({:a 1} 1) ;; nil

;; records? no, records are not functions
(defrecord T [t])
((->T 1) :t) ;; error: T cannot be cast to clojure.lang.IFn
(:t (->T 1)) ;; 1

最佳答案

其他人已经回答了这个问题,但以下是如何使您的 defrecord 类型之一实现 IFn 接口(interface):

user> (defrecord Blah
[x y]

clojure.lang.IFn
(invoke [o arg] (arg o)))

user> (let [obj (->Blah 1 2)]
[(obj :x) (obj :y)])
[1 2]

关于clojure - 为什么记录不是函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54530362/

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