Tôi muốn đọc nội dung của một tệp trong danh sách. Một số nỗ lực của tôi cho đến nay đã có -Làm cách nào để đọc nội dung của một tệp trong danh sách trong Lisp?
(defun get-file (filename)
(let ((x (open filename)))
(when x
(loop for line = (read-line x nil)
while line do (list line)))
(close x)))
(defun get-file (filename)
(let ((x (open filename :if-does-not-exist nil)) (contents (list nil)))
(when x
(loop for line = (read-line x nil)
while line do (cons contents line)))
(close x) contents))
(defun get-file (filename)
(let ((x (open filename :if-does-not-exist nil)) (contents nil))
(when x
(loop for line = (read-line x nil)
while line do (append contents line)))
(close x) contents))
Không có cách nào trong số này hoạt động. Bất cứ ai có thể cho tôi biết một cách? Hoặc thậm chí tốt hơn - làm thế nào để đưa tất cả các nội dung vào một mảng?
(với mở file (f filename) Tại sao bạn có một f trước tên tập tin đó? những gì hiện thu thập dòng làm gì? Và làm thế nào mà cộng tác với dòng trong khi ở cuối? – Sterling
'with-open-file' mở tệp có tên' filename' và liên kết luồng với 'f'. 'collection' thu thập các giá trị khác nhau của' dòng' trong một danh sách, cho đến khi 'while' là' nil'. Common Lisp HyperSpec và thực tế Common Lisp là bạn của bạn! –
Nói cách khác, 'with-open-file' thực hiện tất cả công việc của' open' và 'close' và' let'. –