2015-12-13 7 views
6

Wenn ich eine Funktion habe, die auf (current-output-port) druckt, gibt es eine einfache Möglichkeit, die Funktion auszuführen, ohne dass sie zum Ausgabeport druckt?Racket-Äquivalent von/dev/null?

(with-output-to-file "/dev/null" #:exists 'append 
    (lambda() (displayln "hello world"))) 

Dies ist einfach, aber plattformabhängig:

Früher habe ich /dev/null als ein Ausgabeziel verwendet. Auch werde ich manchmal die #:exists Flagge vergessen.

Antwort

6

Ja! Verwenden Sie open-output-nowhere von racket/port.

(parameterize ([current-output-port (open-output-nowhere)]) 
    (displayln "hello world")) 

Wenn Sie Fehlerausgabe ausblenden möchten, außer Kraft setzen current-error-port stattdessen/auch.