我希望能够在访问它之前测试一个变量是否被定义。如何在引用它之前测试变量是否已定义?
我喜欢指定一个“调试级别”的全局。如果调试级别为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