我在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中检查pattern object的字段(使用js-key)会发现该对象有一个名为
"patterning$protocols$Transformable$scale$arity$2"这看起来像我的函数。那么,在ClojureScript中访问它是不是做错了什么呢?确实如此。符号不起作用?我还需要做些别的事情吗?
发布于 2016-01-27 21:11:45
对协议函数的调用就像对其他函数的调用一样。因此,您的f函数应该如下所示:
(require 'protocols)
(defn f [pattern] (protocols/scale pattern (/ 1 2)) )https://stackoverflow.com/questions/35037836
复制相似问题