tl;博士
如何从 ClojureScript 中的数字派生关键字:
(keyword 22)
;;=> :22 but in fact returns nil.
背景
在我的 ClojureScript/Hoplon 应用程序中,我通过cljs-http发出 HTTP 请求。我收到的部分回复如下所示:
{:companies
{:22 {:description ... } ; A company.
:64 {:description ... }
... }
{:offers
[{:description ... } ; An offer.
{:description ... }
... ]
后面的向量中的每个报价:offers
都有一个:companyId
代表 中的键:companies
。一旦我收到响应,我就是reset!
一个细胞(类似于原子)query
。
现在,我想遍历每个报价并调用一个offer-tpl
创建相应 HTML 的函数。为此,offer-tpl
需要报价本身以及相关公司:
(for [offer (:offers @query)]
(offer-tpl offer (get-in @query [:companies (keyword (:companyId offer))]))))))
尽管这肯定可以做得更优雅(非常感谢建议),但这get-in
不起作用。(:companyId offer)
返回一个数字(例如22
)但(keyword (:companyId offer))
返回nil
. 调用(keyword (str (:companyId offer)))
可以解决问题,但是没有其他方法可以做到这一点吗?