在ClojureScript Figwheel中访问defrecord方法

时间:2016-01-27 12:47:33

标签: clojure 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中访问它时做错了什么?是吗符号不起作用?我还需要做点什么吗?

1 个答案:

答案 0 :(得分:2)

调用协议函数就像调用任何其他函数一样。因此,您的f函数应如下所示:

(require 'protocols)
(defn f [pattern] (protocols/scale pattern (/ 1 2)) )