2011-10-01 74 views
1

多個向量的clojure.contrib.sql模塊具有create-table函數,它的表名和規格列表,像這樣:分配變量Clojure中

(sql/create-table :services 
        [:id :serial "PRIMARY KEY"] 
        [:service_name :varchar "NOT NULL"] 
        [:pass_hash :varchar "NOT NULL"] 
        [:token :varchar "NOT NULL"]) 

如果我一次又一次地重複使用相同的列,有沒有一種方法來定義這樣的東西?

(def same-columns 
        [:id :serial "PRIMARY KEY"] 
        [:service_name :varchar "NOT NULL"] 
        [:pass_hash :varchar "NOT NULL"] 
        [:token :varchar "NOT NULL"]) 

當我試圖運行在REPL我得到一個錯誤,因爲它傳遞參數太多def

回答

3

你也許可以使用apply此:

(def same-columns [[:id :serial "PRIMARY KEY"] 
        [:service_name :varchar "NOT NULL"] 
        [:pass_hash :varchar "NOT NULL"] 
        [:token :varchar "NOT NULL"]]) 

(apply sql/create-table 
     :services 
     same-columns) 

如果您有其他欄目,你可以添加這些還有:

(apply sql/create-table 
     :services 
     [:some-column :varchar "NOT NULL"] 
     same-columns)