1

おそらく簡単な質問です。デバッグ出力(format-stringの折り返しを含む)を処理するために、Schemeの "(format ..)"関数を折り返したいと思います。

「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 に答える