1

可能是一个简单的问题:我想包装 Scheme 的 "(format ..)" 函数以处理我的调试输出(包括格式字符串的包装)。

由于“格式”采用可变数量的参数,我的包装器也需要这样做,从而产生关于我如何告诉方案具有省略号参数以及如何引用它的问题。

我想到了这样的事情:

(define debugPrint
    (lambda (formatString ELLIPSIS_PARAMETER)
        (if debug
            (format #t (string-append "<!--" formatString "-->") ELLIPSIS_PARAMETER)
            ()
        )
    )
)

提前谢谢你的帮助!

4

1 回答 1

3

为此有点表示法:

(define (debugPrint formatString . params)
 (if debug
   (apply format #t (string-append "<!--" formatString "-->") params)
   '()))

请注意,apply点符号将所有参数包装在列表中,当您使用时(debugPrint "~a: ~a" key name)formatString将绑定到"~a: ~a"并且params将绑定到(key name)(确保键和名称的值,而不是符号;)。

于 2012-08-22T11:17:59.880 回答