【发布时间】:2013-08-30 06:33:41
【问题描述】:
我在交叉命名空间中有一个协议:
(ns xxx.shared.interfaces)
(defprotocol ITimer
(seconds [timer] "Return time in seconds since timer began"))
我有一个 Clojure 的实现:
(ns xxx.time
(:require [xxx.shared.interfaces :refer [ITimer]]))
(defrecord Timer [start-nanos]
ITimer
(seconds [timer] (double (/ (- (System/nanoTime) (:start-nanos timer))
1000000000))))
问题是,当我在某些 Clojure 代码中使用此代码时,需要 xxx.time 命名空间和 :refer :all 它抱怨找不到 seconds:
Unable to resolve symbol: seconds in this context
首先,这种方式可以共享协议吗?
其次,知道我如何才能做到这一点吗?
第三,这真的是进行这种代码共享的好方法吗?理想情况下,我也想分享记录,但它依赖于 Java 代码,所以我需要将其分解为一个函数。这样做会更好吗?
谢谢!
【问题讨论】:
标签: clojure clojurescript