我有一个函数返回一个具有两个字段的结构:key:event。 :event字段是一个映射(从高速缓存检索到的分解的Java对象)。在REPL中,我将返回值看作地图。将列表转换回映射的地图
然后,我应用(def events (map #(make-event %) (keys events-cache)))
,对缓存中的每个密钥应用make-event函数,并且希望映射返回包含通过密钥键入的每个事件映射。
我得到的回复是如此,但名单内。因此调用任何地图功能,搜索等,引发错误,clojure.lang.LazySeq不能转换到clojure.lang.IFn。
我敢肯定,我在想这都是错误的,但有没有办法拉从列表地图的地图吗?
这有点难以想像你的意思是这里的数据 - 这将有助于有什么'事件,cache'看起来像一个[可能简化]例如,什么'让-event'一样。它现在看起来像'events-cache'中的值永远不会用在'events'的输出中。 – trptcolin 2011-03-31 02:23:35
user>(keys events-cache) (44 29 76 36 26 33 65 25)对于我称之为make-event的每个键。 make-event返回一个clojure地图。我想要的是这些地图的地图,但我得到的列表包含地图的地图。 – JPT 2011-03-31 02:28:47
用户>事件 ({:键44,:事件{:名称 “S-测试#1”,:状态 “打开的”,:启动#<日期星期二06月15十三点27分00秒EDT 2010>,:TV“ “:”体育“足球”,:主场“曼联足球俱乐部”,:客场“利物浦足球俱乐部”}} {:key 29,:event {:name“Singles Woods v Harrington”,:status“Opened” <日期3月11日00:00:00东部标准时间2010>,:电视“天空体育”,:体育“高尔夫”,:主页“老虎伍兹”,:客场“帕德雷格哈灵顿”}})。这是因为地图函数返回一个列表? – JPT 2011-03-31 02:36:51