2015-12-08 2 views

Antwort

9

Sie einfach die Datei zum Lesen öffnen with-open-file verwenden und dann die Funktion read so oft Sie verwenden möchte oder so oft wie es Arrays gibt. Jedes read gibt ein Array zurück. Mit loop können Sie sammeln sie in eine Liste.

Im Grunde so etwas wie diese:

(with-open-file (s filename) 
    (let ((*read-eval* nil)) 
    (loop with eof = '#:eof 
      for object = (read s nil eof) 
      until (eq object eof) 
      collect object))) 

Beachten Sie auch, dass es nicht darum, ob keine Rolle jedes Array in einer eigenen Zeile ist. Es würde immer noch funktionieren, wenn sie in einer Zeile sind. A Newline zwischen Ausdrücken ist nur Whitespace für die Lisp Leser.

+1

Vielen Dank! so viel einfacher, dass ich dachte :) –

+3

@LidiaFreitas: Das liegt daran, dass das Array bereits in Common Lisp Syntax gedruckt wird. :-) –

+1

... und binden Sie '' read-eval * 'immer an' nil', bevor Sie '' 'aus' 'nicht vertrauenswürdigen Quellen lesen. – Svante

Verwandte Themen