2
world.clj
,node.clj
、protocols.clj
という3つのファイル/ nがあります。 Node
レコードは、movable
というプロトコルを実装しています。それから私はworld.clj
(これはノードの状態などを維持しています)からそれを呼びたいと思いますが、私はどのように把握できません。 :require
には何が必要ですか?3つの名前空間でのプロトコル、実装、呼び出し元
protocols.clj:
(ns mesh.protocols)
(defprotocol movable
(move [this pos])
node.clj:
(ns mesh.node
(:require [mesh.protocols :refer [movable]]))
(defrecord Node [...]
movable
(move [this pos] ...))
world.clj:私は呼び出すことができるようにworld.clj
に要求する必要がありますどのような
(ns mesh.world
(:require ???))
(defn update-world [world]
...
(move node new-pos))
Node
にmove
の実装がありますか?私は何を試しているかによって以下のような様々な例外が発生します。
Exception in thread "main" java.lang.RuntimeException: Unable to resolve symbol: move in this context, compiling:(mesh/world.clj:13:29)
Exception in thread "main" java.lang.IllegalAccessError: move does not exist, compiling:(mesh/world.clj:1:1)
それが正しい:require
でこれを解決することは可能ですか私はものを周りに移動する必要がありますか?そしてその場合、私は代わりに材料を整理することをどのようにお勧めしますか?
それは私のために物事をクリアしました。ありがとう! –