[英]Clojurescript defprotocol and defrecord in different namespaces
[英]Accessing defrecord methods in ClojureScript Figwheel
我在cljc文件中有一些代码可以编译成Clojure和ClojureScript。
在protocols.cljc中
(defprotocol Transformable ".."
(scale [this scalar] "" ) ...)
在pattern.cljc中
(defrecord APattern [paths]
Transformable
(scale [this s] (...)) ...)
在another.cljc
(defn f [pattern] (.scale pattern (/ 1 2)) )
并在core.cljs
(another/f pattern)
但是,我在浏览器控制台上收到错误
TypeError: pattern.scale is not a function
检查core.cljs中的模式对象的字段(使用js-keys)向我显示该对象有一些叫做的东西
"patterning$protocols$Transformable$scale$arity$2"
看起来像我的功能。 所以我只是在ClojureScript中访问它时做错了什么? 是吗 符号不起作用? 我还需要做点什么吗?
调用协议函数就像调用任何其他函数一样。 所以你的f
函数应该如下所示:
(require 'protocols)
(defn f [pattern] (protocols/scale pattern (/ 1 2)) )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.