可能是一个简单的问题:我想包装Scheme的“(format ..)”函数,以便处理我的调试输出(包括格式字符串的包装)。
由于“格式”需要一个可变数量的参数,我的包装器需要这样做,这也产生了一个关于如何告诉scheme有一个省略号参数以及如何引用它的问题。
我想到了这样的事情:
(define debugPrint
(lambda (formatString ELLIPSIS_PARAMETER)
(if debug
(format #t (string-append "<!--" formatString "-->") ELLIPSIS_PARAMETER)
()
)
)
)
提前感谢您的帮助!
答案 0 :(得分: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)
(确保键和名称的值,而不是符号;)。