(line-seq (reader "input.txt"))
'u kullanarak bir metin dosyasından satırları okuyorum. Bu koleksiyon daha sonra benim programım tarafından kullanıldı ve kullanıldı. Ben deterministik dosyayı kapatma değilim olarak`line` seq` ile` line` seq ', dosya ne zaman kapatılır?
Ben, bu ancak kötü tarzı olabileceğini endişeleniyorum. Tüm diziyi geçmeden önce dosya akışı potansiyel olarak kapanacağından, (with-open (line-seq (reader "input.txt")))
kullanamayacağımı hayal ediyorum.
lazy-seq
dosyalar için reader
birlikte kaçınılmalıdır? Burada kullanmam gereken farklı bir desen var mı? Bu clojure.contrib.duck-streams/read-lines gibi görünüyor
clojure.contrib.duck-stream'ler kullanımdan kaldırılmıştır: http://clojure.github.com/clojure-contrib/#duck-streams – pauldoo
@pauldoo Bunu fark etmedim. Haklısınız, ancak 'line-seq' ve' read-line' işlevleri, okuyucudan dizeleri (.readLine ile) almak için aynı modeli kullanır. Sadece (onlara bakmak [line-seq] (https://github.com/clojure/clojure/blob/f86db9cc68773dd3e4a166c1ff7b81e4a98aa602/src/clj/clojure/core.clj#L2314), [okuma-line] (https: // github.com/clojure/clojure-contrib/blob/aa3f018f65006c78b08703e7adef04b7f39e1542/src/main/clojure/clojure/contrib/duck_streams.clj#L236)), size kaynak koduna 'salt line' kapmak tembellik istiyorum. Başka bir çözüm de görebileceğiniz gibi – m039
@pauldoo tembelliğe kullanmak ve bir değişkene içine bütün içeriğini almak ya da sadece okuyucuda .close kullanmak değildir. Ve 'with-open' (açık-açık [r (reader "input.txt")] (make-smth-on-lines (line-seq r))) ') gibi' 'open' kullanılmalıdır. – m039