gpt4 book ai didi

clojure - Clojure 中的循环加载依赖

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

我的项目有一个简单的结构如下:

|- core.clj
|- dialogs.clj
|- dialogs/
|- name_dialog.clj

name_dialog 依赖于 core,并且 core 应该需要 name_dialog

所以我有这样的依赖关系:

core.clj

(ns ddsl.core
(:gen-class)
(:require [clojure.xml :refer :all]
[ddsl.dialogs :refer :all]))

dialogs.clj

(ns ddsl.dialogs
(:require [ddsl.core :refer :all]))

(load "dialogs/name_dialog")

name_dialog.clj

(in-ns 'ddsl.dialogs)

当我尝试运行该程序时,出现以下错误循环加载依赖:[/ddsl/core ]->/ddsl/dialogs->[/ddsl/core ]

请让我知道如何重组我的项目(我是 Clojure 的新手)。

最佳答案

经典的答案(与 Clojure 无关)可能是检查模块及其职责。

(下面的->代表“取决于”)

给定:

core -> dialogs -> core

dialogs所需的core模块部分提取到单独的共享模块中:

shared (depends on "nothing")
core -> dialogs -> shared
core -> shared (possibly)

对我来说,循环依赖表明设计存在问题。即使技术问题得到解决(通过加载时间顺序或编译等),循环依赖通常是紧密耦合的标志,仍然值得修复。

关于clojure - Clojure 中的循环加载依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32991338/

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