我只是在试验Om,从基础教程中学习。
我的程序数据在一个原子中:app-state。
如果我将序列放入该原子,例如。
(defonce app-state (atom {:things [1 2 3 4]}))
然后,在我的渲染中,我可以得到一个光标
(let [things (:things data)] ... )
并映射它:
(map #(* % %) things)
但是,如果我有一个可以返回序列的方法的defrecord:
(defrecord ThingCollection [xs]
IThingCollection
(getSeq [this] ... ) )
并将THAT置于应用程序状态
(defonce app-state (atom {:things (->ThingCollection [1 2 3 4]})))
...
(let [things (:things data)] ... )
我不能这样做:
(map #(* % %) (.getSeq things))
它只是抛出一个错误,表示游标没有方法.getSeq
这是有道理的。但是,我怎样才能真正得到光标内的ThingCollection对象?我找不到任何这方面的例子。我尝试过的任何东西似乎都没有给我。
答案 0 :(得分:0)
尝试(getSeq things)
。
很少注意到:
get-seq
而不是getSeq
->ThingCollection
没有给出一个对象,它只是给出一个记录。这仍然是不可变的,大致只是一个名为map"。.method
调用看起来应该是错误的,因为这是为了处理JavaScript对象。