Tôi muốn có thể kiểm tra xem một biến được xác định, trước khi truy cập nó.Làm cách nào để kiểm tra xem biến có được xác định trước khi tham chiếu không?
Tôi muốn có toàn cầu chỉ định "mức gỡ lỗi". Nếu mức độ gỡ lỗi là 0, không có đầu ra thêm nào được đưa ra. Khi lớn hơn 1, đầu ra gỡ lỗi được đưa ra, với độ dài hơn ở số lớn hơn.
Tôi cũng muốn thiết lập nó để các quy trình sẽ chạy và giả định mức 0, nếu tôi không nhận được để xác định nó. Một cái gì đó như:?.. (Nơi defined?
là sự kỳ diệu tôi không biết làm thế nào để làm
(if (and (defined? debug-level) (> debug-level 1))
(diplay "Some debugging info"))
Tôi đã nhìn qua bản tóm tắt các hình thức trong The Scheme Programming Language, 4th Edition Là người duy nhất mà tôi thấy như một khả năng là identifier?
Nó đã làm . không hoạt động
tôi đang sử dụng SISC 1.16.6 (tuyên bố R5RS tuân thủ) và Chez Petite Scheme v8 (tuyên bố R6RS tuân thủ)
EDIT tôi đã cố gắng gói eval
với một guard
như:
(guard (x (else #f)) (eval 'debug-level))
Vì số 'debug-level
được trích dẫn, nó có thể được đánh giá và chuyển đến eval
. Sau đó, khi eval
cố gắng để đánh giá nó, một lỗi sẽ xảy ra, mà tôi hy vọng guard
sẽ bắt. Nó không.
EDIT 2 tôi nhận ra rằng tôi muốn quấn debug truy tìm thành một thủ tục riêng biệt và rằng tập tin định nghĩa rằng thủ tục cũng có thể xác định debug-level
với một mặc định là 0. Mục đích sử dụng một thủ tục riêng biệt là để giảm số lượng các dòng trong các quy trình làm việc và cũng cho phép chuyển hướng đầu ra gỡ lỗi nếu cần.
Cảm ơn bạn. Tôi sợ câu trả lời sẽ không được di chuyển rộng rãi, rằng nó sẽ là một cái gì đó mới trong R6RS hoặc thực hiện cụ thể. 1, nhưng tôi sẽ để tuổi này trả lời một chút, để xem liệu có ý tưởng nào tốt hơn được đăng trước khi chấp nhận là đúng hay không. –