我想運行一個函數,但是沒有在終端輸出結果。例如,(set 'A 'B)
通常在類似如下的控制檯返回B
:在LISP中防止終端輸出
>>> (set 'A 'B)
B
>>> A
B
我不希望它返回任何東西;我仍然希望功能做什麼它應該,只是默默:
>>> (set 'A 'B)
>>> A
B
我想運行一個函數,但是沒有在終端輸出結果。例如,(set 'A 'B)
通常在類似如下的控制檯返回B
:在LISP中防止終端輸出
>>> (set 'A 'B)
B
>>> A
B
我不希望它返回任何東西;我仍然希望功能做什麼它應該,只是默默:
>>> (set 'A 'B)
>>> A
B
它並不完美,但你可以在你的表達的末尾使用(值)來抑制輸出。你會得到一個空白行。
的Common Lisp:
(progn (set 'A 'B) (values))
我不知道在計劃的當量。
lisp REPL總是打印一些返回值。如果你真的不想輸出,你可以運行你的代碼作爲終端中的腳本。
例子:
#!/path/to/interpreter
(set 'A 'B)
[rest of program]
我得出了相同的解決方案user1613254,但是我做這個(有它在我的.sbclrc)宏:
(defmacro m-ignore (fun &body body)
"ignores the return value of a function"
`(progn (,fun ,@body)
(values)))
你使用這樣的:
(m-ignore format t "text")
輸出將是:
文本
代替:
文本
NIL
使用
(format t "text")
時由於打印的價值實際上是你的函數的返回值將被打印出來,和函數的返回值是最後表達式求值的值,你可以簡單地添加一個「空」(例如返回「」)在你的通話結束後/之後的指示。