我希望能夠在訪問它之前測試一個變量是否被定義。如何在引用它之前測試變量是否已定義?
我喜歡指定一個「調試級別」的全局。如果調試級別爲0,則不會給出額外的輸出。當大於1時,給出調試輸出,數字越大則越冗長。
我也想設置它,以便程序運行,並假設一個0級,如果我沒有得到定義它。喜歡的東西:。(其中defined?
是神奇的,我不知道該怎麼辦
(if (and (defined? debug-level) (> debug-level 1))
(diplay "Some debugging info"))
我走過的形式彙總看着The Scheme Programming Language, 4th Edition,我看到的可能性是identifier?
唯一一個它沒有。不行
我使用SISC 1.16.6(聲稱R5RS規範)和切斯嬌小方案V8(聲稱R6RS達標)
編輯我試着用guard
包裝eval
,如:
(guard (x (else #f)) (eval 'debug-level))
由於'debug-level
被引用,因此可以評估並傳遞給eval
。然後,當eval
試圖評估它時,會發生錯誤,我希望guard
會被捕獲。它沒有。
編輯2我發現我想換行調試跟蹤到一個單獨的程序,並且定義該程序也可以以0的原因默認定義debug-level
用於使用一個單獨的過程中的文件是降低過程中可以工作的行數,並且還允許在需要時重定向調試輸出。
謝謝。我很害怕,答案不會是廣泛的便攜,這將是無論是在R6RS或實施具體的新的東西。 +1,但我打算讓這個答案的年齡了一下,看看是否有更好的想法得到接受是正確的之前公佈。 – 2010-07-16 21:02:46