【问题标题】:Splice a list of vectors into a vector without unquote splice将向量列表拼接成不带引号拼接的向量
【发布时间】:2014-04-03 01:10:07
【问题描述】:

没有unquote-splice,有没有办法可以做到以下几点? map 返回一个向量列表。

(def base-html
  `[:html
    [:head ~@(map include-css ["css/reset.css"
                               "css/main.css"])]
    [:body]])

=> [:html 
     [:head 
       [:link {:href "css/reset.css", :rel "stylesheet"}] 
       [:link {:href "css/main.css", :rel "stylesheet"}]] 
     [:body]]

【问题讨论】:

  • 如果你使用Hiccup生成html,那么它会自动为你展开序列到元素中。
  • @A.Webb 我正在使用enlive 并最终编写了一个宏并依赖于您提到的行为。我不知道这种行为有多可靠,但它似乎有效。如果事情开始破裂,我会再次调查。

标签: vector clojure


【解决方案1】:

这就够了吗?

(def base-html
  [:html
    (vec (cons :head (map include-css ["css/reset.css"
                                       "css/main.css"])))
    [:body]])

【讨论】:

  • 我不确定这是否比原来的解决方案好很多。如果你想让[:script] 跟随[:link] 怎么办?
  • 我会使用 concat,例如(concat [:head] (map ...) [[:script]])
猜你喜欢
  • 1970-01-01
  • 2018-07-20
  • 1970-01-01
  • 2015-02-18
  • 2021-07-31
  • 1970-01-01
  • 2010-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多