2010-09-25 50 views

回答

11

DO变量的语法是:变量初始化形式,更新形式。在这种情况下,初始化表单与更新表单相同。但是DO中没有这种情况的简写,所以你必须写出两遍。

0

如果您可以从文件中读取数据,则可以使用(listen file)进行测试。

这是我的打印文件的功能

(defun print-file (filename) 
    "Print file on stdout." 
    (with-open-file (file filename :direction :input) 
      (loop 
      (when (not (listen file)) (return)) 
      (write-line (read-line file))))) 
+0

多个连接并使用格式创建新字符串真的很浪费。不要这样做。 – 2010-09-25 23:43:21

+0

这是一个错误的方法,因为它会产生错误的结果。例如。如果您在linux或windows中传递命名管道的名称,它可能不会立即准备好输入,因此listen将返回NIL,并且函数将返回而不实际复制任何内容。 – 2010-09-26 08:31:31

5

您需要阅读DO的语法:http://www.lispworks.com/documentation/HyperSpec/Body/m_do_do.htm

第一次读线形态是init-形式和第二个是台阶形。所以在第一次迭代中,变量被设置为init-form的结果。在下一次迭代中,变量被设置为步骤形式的值。

+0

+1提供链接 – 2010-09-25 23:55:46

相关问题