我正在使用打嗝生成一些复选框,后跟标签.原始代码如下所示:
(check-box "check1")
(label "check1" "Check1") 
(check-box "check2")
(label "check2" "Check2")
(check-box "check1")
(label "check3" "Check3")
(check-box "check4")
(label "check4" "Check4")
经过大量的修修补补,我得到了以下几点:
(map
    (fn [x]
        (map
            #(get (vector
                (check-box x)
                (label x (capitalize x)))%)
            [0 1]))
    ["check1" "check2" "check3" "check4"])
哪个有效,但我觉得我不是在一个非常类似于/优化/正确的等等.方式 - 特别是返回一个向量只是为了用get来挖出这些值.有一个更好的方法吗?
Tim*_*dge 11
也许解构是你需要的?
(defn multi-return-fn []
  [:1 :2 :3])
(let [[x y z] (multi-return-fn)]
    (println x)
    (println y)
    (println z))
解构也适用于fn参数,循环,for循环等.
正如其他人所指出的那样,你的问题不是很明确,但在正常的Hiccup应用程序的上下文中,假设你可能需要以下是合理的:
(apply concat
       (for [boxnum (range 1 5)
             :let [lower-name (str "check" boxnum)
                   upper-name (str "Check" boxnum)]]
         [(check-box lower-name)
          (label lower-name upper-name)]))
还有很多其他方法可以写出来; 这个人在冗长而清晰的一面犯错,而不是简洁.
| 归档时间: | 
 | 
| 查看次数: | 4608 次 | 
| 最近记录: |