2011-12-27 32 views
10

Có một hàm built-in để in các sản phẩm của một danh sách không có dấu ngoặc top-level, hoặc sẽ có thể là một cách tốt hơn để viếtClojure in danh sách không có dấu ngoặc đơn?

(defn println-list 
    "Prints a list without top-level parentheses, with a newline at the end" 
    [alist] 
    (doseq [item alist] 
    (print (str item " "))) 
    (print "\n")) 

để có được một sản lượng

user=> (println-list '(1 2 3 4)) 
1 2 3 4 
nil 

Trả lời

16

Một cái gì đó như thế này?

(apply println '(1 2 3 4 5)) 
1 2 3 4 5 
nil 

Từ Clojure docs for apply:

Usage: (apply f args) 
     (apply f x args) 
     (apply f x y args) 
     (apply f x y z args) 
     (apply f a b c d & args) 
Applies fn f to the argument list formed by prepending intervening 
arguments to args. 
3

trong clojure-contrib.string bạn có chức năng tham gia,

user=> (require '[clojure.contrib.string :as string]) 
nil 
user=> (string/join " " '(1 2 3 4 4)) 
"1 2 3 4 4" 
user=> (println (string/join " " '(1 2 3 4 4))) 
1 2 3 4 4 
nil 
Các vấn đề liên quan