gpt4 book ai didi

clojure - 仅加载多方法文件

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

场景:我想使用多方法在多个文件之间分派(dispatch)和传播功能。其中一个文件只包含多方法,为了使它们可用,我必须手动加载文件。有没有办法自动加载文件,而不是显式加载它?

这是我正在做的一个简单示例:

; app/core.clj
(ns app.core
(:use [app.fruit.core :only [make-fruit]])
(println (:name (make-fruit :banana)))

; app/fruit/core.clj
(ns app.fruit.core)
(defmulti make-fruit identity)

; app/fruit/banana.clj
(ns app.fruit.banana
(:use [app.fruit.core :only [make-fruit]])
(defmethod make-fruit :banana [fruit]
{:name "banana" :color "yellow})

除非我在 app.core 中明确加载,否则不会加载fruit.banana 的方法,例如将其添加到 :use 组中。这似乎违背了使用多方法的目的,因为我仍然必须明确说明实现它的所有方法。

最佳答案

除非您愿意,否则您不必明确表达。如果它们在另一个点被其他东西加载,这些方法将起作用。如果我想给 make-fruit 添加一个方法,那么我将不得不自己加载该方法。此时,任何调用 make-fruit 的代码,会知道我的新方法。

关于clojure - 仅加载多方法文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21854859/

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