2010-09-25 93 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

相關問題