我有一个像这样的.txt文件:
0
1
2
3
4
5
6
7
8
0
1
2
3
4
5
6
7
8
Run Code Online (Sandbox Code Playgroud)
我希望LISP读取文本文件并生成两个列表,第一个列表包含文本文件的前九个值,第二个列表包含后九个值.像这样:List1 =(0 1 2 3 4 5 6 7 8),List2 =(0 1 2 3 4 5 6 7 8).我有这些代码:
(DEFUN text()
(SETQ l NIL)
(LOOP
(UNLESS (NULL l) (SETQ LST1 (LIST (READ l)(READ l)(READ l)(READ l)(READ l)(READ l)(READ l)(READ l)(READ l))
LST2 (LIST (READ l)(READ l)(READ l)(READ l)(READ l)(READ l)(READ l)(READ l)(READ l))
eb (LST1) em (LST2))
(CLOSE l) (RETURN (ASTAR LST1 LST2)))
(SETQ l (OPEN filename :if-does-not-exist nil))))
Run Code Online (Sandbox Code Playgroud)
let.全局变量使您的代码变得脆弱,副作用和全局命名空间混乱.with-open-file.(defun read-18-lines-of-integers-in-two-lists (file)
(with-open-file (in file)
(loop repeat 2
collect (loop repeat 9
collect (parse-integer (read-line in))))))
Run Code Online (Sandbox Code Playgroud)
(read-18-lines-of-integers-in-two-lists #P"/tmp/test")
=> ((0 1 2 3 4 5 6 7 8) (0 1 2 3 4 5 6 7 8))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
555 次 |
| 最近记录: |