3

我在 Clojurescript 中有两条记录,定义如下:

(defrecord Html [])
(defrecord Tree [])

我需要找出可以定义为这些记录中的任何一个的项目的类型,我该怎么做?

(def a (Html.))
4

3 回答 3

4
(defrecord Html [])
(defrecord Tree [])

(= (type (->Html)) Html) ; true
(= (type (->Html)) Tree) ; false

(= (type (->Tree)) Html) ; false
(= (type (->Tree)) Tree) ; true
于 2016-08-25T10:46:43.167 回答
2

最好的、独立于主机的方法是:

(instance? Html a)

这适用于任何类型。

于 2019-03-13T03:30:12.813 回答
1

最后我像这样解决了它,它似乎有效:

(defrecord Html [])
(defrecord Tree [])



(defprotocol TypeInfo
  (gettype [this] nil)
)


(extend-type Html
  TypeInfo
  (gettype [this]  "Html")

)

(extend-type Tree
  TypeInfo
  (gettype [this]  "Tree")

)

(def a (Html.))


(gettype a)

(def b (Tree.))


(gettype b)
于 2013-06-20T07:44:13.297 回答