2010-10-02 54 views
5

Trang Practical Common Lisp, giải thích WITH-STANDARD-IO-SYNTAX như sau. "Nó đảm bảo rằng các biến nhất định ảnh hưởng đến hành vi của PRINT được đặt thành giá trị chuẩn của chúng".Macro WITH-STANDARD-IO-SYNTAX là gì?

Cách sử dụng như sau.

(with-open-file (...) 
    (with-standard-io-syntax 
     (print ... 

(in) có nên được sử dụng trong macro này không? Nếu không, chuyện gì sẽ xảy ra?

Trả lời

6

Biến động khác nhau ảnh hưởng đến đầu ra được tạo bởi print. with-standard-io-syntax đảm bảo các biến đó được đặt thành giá trị mặc định.

Ví dụ:

(let ((list '(1 2 3 4 5 6 7 8 9 10)) 
     (*print-length* 5)) 
    (print list) 
    (with-standard-io-syntax 
    (print list))) 

Prints:

(1 2 3 4 5 ...) 
(1 2 3 4 5 6 7 8 9 10) 

Đó là đặc biệt quan trọng nếu bạn đang in mọi thứ với mục đích của việc có thể read chúng sau này (như với prin1).

Các vấn đề liên quan