首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >访问ClojureScript Figwheel中的defrecord方法

访问ClojureScript Figwheel中的defrecord方法
EN

Stack Overflow用户
提问于 2016-01-27 20:47:33
回答 1查看 309关注 0票数 4

我在cljc文件中有一些代码,可以编译成Clojure和ClojureScript。

在protocols.cljc中

代码语言:javascript
复制
(defprotocol Transformable ".." 
    (scale [this scalar] "" ) ...)

在pattern.cljc中

代码语言:javascript
复制
(defrecord APattern [paths]
    Transformable
      (scale [this s] (...)) ...)

在another.cljc中

代码语言:javascript
复制
(defn f [pattern] (.scale pattern (/ 1 2)) )

在core.cljs中

代码语言:javascript
复制
(another/f pattern)

但是,我在浏览器控制台上收到一个错误

代码语言:javascript
复制
TypeError: pattern.scale is not a function

在core.cljs中检查pattern object的字段(使用js-key)会发现该对象有一个名为

代码语言:javascript
复制
"patterning$protocols$Transformable$scale$arity$2"

这看起来像我的函数。那么,在ClojureScript中访问它是不是做错了什么呢?确实如此。符号不起作用?我还需要做些别的事情吗?

EN

回答 1

Stack Overflow用户

发布于 2016-01-27 21:11:45

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

代码语言:javascript
复制
(require 'protocols)
(defn f [pattern] (protocols/scale pattern (/ 1 2)) )
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35037836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档