gpt4 book ai didi

data-structures - Clojure 中的多态性

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

假设我有一堆 Clojure 数据结构,它们都是相同的类型——例如 defrecord 定义的对象类型。

在这些结构中获得多态行为的最佳方式是什么?

在结构中嵌入一个函数是否是一个好习惯,这样我就可以做类似的事情:

((:my-method my-object) param1 param2)

或者有更好的方法吗?

最佳答案

您可以使用多种方法进行调度,

(derive ::subtype ::type)

然后你可以根据类型分派(dispatch)

(defmulti my-method
(fn [type] ((meta type) :type)))

(defmethod my-method ::subtype []
;;stuff...
)

您需要在创建对象时将 :type 添加到对象元数据中,

(with-meta [1 2 3] {:type ::subtype})

或者我还没有尝试过,但是由于协议(protocol)和记录在后台创建了 Java 类,您可以根据该名称进行分派(dispatch)。

关于data-structures - Clojure 中的多态性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3276370/

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