我有以下记录类型,我试图测试:
(defrecord FirstOrderState [datum matrix]
State
;; implementation goes here ...
)
我正在尝试根据上述类型进行分支,但我没有得到我需要的结果
(def state (->FirstOrderState datum matrix))
(= (type state) composer.algorithm.markov.state.FirstOrderState)
=> false
但是,查看state
的类型确认它应该匹配:
(type state)
=> composer.algorithm.markov.state.FirstOrderState
这似乎应该有效,因为类似的检查会导致true
:
(= (type []) clojure.lang.PersistentVector)
=> true
我在这里失踪的是什么?使用下面的hack提供了一个解决方案,但不是很优雅:
(= (str (type state)) (str composer.algorithm.markov.state.FirstOrderState))
=> true
答案 0 :(得分:4)
我的第一个猜测是你重新加载了包含记录类型和定义的命名空间state
在别处定义(可能在REPL中),所以{{1现在指的是与创建composer.algorithm.markov.state.FirstOrderState
时使用的类不同的类。
REPL演示:
state