2013-08-04 5 views

cevap

8

Kullanım clojure.pprint/writeclojure.pprint/code-dispatch ile:

(clojure.pprint/write '(do (println "Hello") (println "Goodbye")) 
         :dispatch clojure.pprint/code-dispatch) 

Bu küçük kod için yeni satırlar alamazsınız. Ama böyle bir çağrı

(clojure.pprint/write '(do (println "Hello") (println "Goodbye") (println "Hey, you left me out!")) 
         :dispatch clojure.pprint/code-dispatch) 

İade

=> (do 
    (println "Hello") 
    (println "Goodbye") 
    (println "Hey, you left me out!")) 

(with-out-str ...)clojure.pprint bir daha üretken ve başarılı alternatif olarak

+0

Fantastik, Bunu deneyeceğim ve size bildireceğim – Zubair

+0

Bunu lighttable denedim ama konsolda hiçbir şey almadım. Prn/print-edn'i sadece bir dizge döndürmek için nasıl alabilirim? – Zubair

+0

Yaptım (prn/print-edn (p/ayrıştırma dizgisi (str (quote ("println" Hello ") (println" Hoşçakal ")))))), ancak nil döndürür ve konsolda hiçbir şey görünmez – Zubair

5

aramayı sarın bir dize olarak Anlaşılmadıyamadım için, Brandon denemek isteyebilirsiniz Bloom'in fipp:

;; add [fipp "0.4.0"] to :dependencies 
(require '[fipp.edn :as fipp]) 

(fipp/pprint '(do (println :foo) (println :bar) (println :quux)) 
      {:width 30}) ; force wrapping despite small size of data 
;; printed output: 
(do 
(println :foo) 
(println :bar) 
(println :quux)) 

Ne yazık ki, Fipp henüz kod yazmayı desteklemiyor.

+0

Clojure kodunu desteklemiyor. Örneğin. baskılar basılmadan önce tek-çizgili ya da karma etiketlerle tanımlanmış lambdalar üretilecektir. –

+0

Bu, clojure.pprint için eşit olarak geçerlidir. '(let [x 1 y 2]: foo)' clojure.pprint ve fipp tarafından bir satırda yazdırılır; '([a 1 b 2 c 3 ... z 26]: foo)' her bir atomla ayrı bir satırda yazdırılır. '' '' '' '' '' '' 'fonksiyonlar aslında' fn * 'formlarına Clojure okuyucu tarafından çevrilir, bu yüzden fipp ve clojure.pprint'in göründüğü fn *' formlarıdır (uygun alıntılar varsayarak) ve tabiki her ikisi de bu para cezası (örneğin, güzel baskı '(pprint '# (: foo))' fipp veya clojure.pprint' pprint 'kullanıp kullanmadığınıza bakılmaksızın' (fn * [] (: foo)) yazdırır. –

+1

Cevabımda olduğu gibi kod gönderme ile birlikte pprint kullanırsanız. –

İlgili konular