我如何访问 Clojure 库中的记录?
How can I access a record in a library in Clojure?
我正在编写一个实现协议的库并尝试访问命名空间外的记录。
storage.clj
包含记录:
(defrecord FrienduiStorage []
f-glob/FrienduiStorage
(get-all-users [this]
(db/get-all-users)))
我是这样要求的[sventechie.friendui-mysql.storage :refer :all]
。
然后像这样实例化它 (def FrienduiStorageImpl (->FrienduiStorage))
但这不起作用:(get-all-users (FrienduiStorageImpl))
"RuntimeException: Unable to resolve symbol: get-all-users in this context"。我做错了什么?
完整的库存储库位于 (http://github.com/sventechie/friendui-mysql/)。
我做了一个最小用法示例 (http://github.com/sventechie/friendui-mysql-example/)。
要将@mavbozo 对您问题的评论形式化为答案,您需要向常规 class
添加导入
所以定义是
(ns sventechie.friendui-mysql.storage)
(defrecord FrienduiStorage [])
用法是:
(ns somewhere.else
(:require [sventechie.friendui-mysql.storage :refer :all])
(:import [sventechie.friendui-mysql.storage.FrienduiStorage]))
我正在编写一个实现协议的库并尝试访问命名空间外的记录。
storage.clj
包含记录:
(defrecord FrienduiStorage []
f-glob/FrienduiStorage
(get-all-users [this]
(db/get-all-users)))
我是这样要求的[sventechie.friendui-mysql.storage :refer :all]
。
然后像这样实例化它 (def FrienduiStorageImpl (->FrienduiStorage))
但这不起作用:(get-all-users (FrienduiStorageImpl))
"RuntimeException: Unable to resolve symbol: get-all-users in this context"。我做错了什么?
完整的库存储库位于 (http://github.com/sventechie/friendui-mysql/)。 我做了一个最小用法示例 (http://github.com/sventechie/friendui-mysql-example/)。
要将@mavbozo 对您问题的评论形式化为答案,您需要向常规 class
添加导入所以定义是
(ns sventechie.friendui-mysql.storage)
(defrecord FrienduiStorage [])
用法是:
(ns somewhere.else
(:require [sventechie.friendui-mysql.storage :refer :all])
(:import [sventechie.friendui-mysql.storage.FrienduiStorage]))