下面的函數構造一個表作爲從列標題的columns
titles
和順序的記錄序列:
(defn build-table [titles columns]
(apply map (fn [& xs] (zipmap titles xs)) columns))
應該有儘可能多的:titles
因爲有columns
。
例如,
(build-table [:date :temp-min :temp-max] data)
其中
(def data ['("Aujourd'hui" "Demain" "25.11" "26.11" "27.11" "28.11" "29.11")
'("2 °C" "2 °C" "1 °C" "0 °C" "-3 °C" "-4 °C" "0 °C")
'("8 °C" "6 °C" "4 °C" "2 °C" "1 °C" "1 °C" "5 °C")])
...產生
({:temp-max "8 °C", :temp-min "2 °C", :date "Aujourd'hui"}
{:temp-max "6 °C", :temp-min "2 °C", :date "Demain"}
{:temp-max "4 °C", :temp-min "1 °C", :date "25.11"}
{:temp-max "2 °C", :temp-min "0 °C", :date "26.11"}
{:temp-max "1 °C", :temp-min "-3 °C", :date "27.11"}
{:temp-max "1 °C", :temp-min "-4 °C", :date "28.11"}
{:temp-max "5 °C", :temp-min "0 °C", :date "29.11"})
這使得所有數據元素爲字符串。將它們轉換爲數字,最好附帶單位,可以獨立處理。正如他們寫的,如2°C
是無效的Clojure。