我想知道是否有一个很好的方法来定义一个函数captureOutput
,它需要一个函数f
,该函数可能包含打印语句,并返回打印的所有内容f
。例如,在f#中捕获打印语句
let f x = print "%s" x
let op = captureOutput (f "Hello World")
val op : string = "Hello World"
我在想,也许有一个很好的办法做到这一点异步地Console.ReadLine()
,但我一直没能上班什么的。
干杯
编辑:
基于陀Soikin的评论,下面的代码做什么,我想:
let captureOutput f x =
let newOut = new IO.StringWriter()
Console.SetOut(newOut)
f x
Console.SetOut(Console.Out)
newOut.ToString()
你有没有试过['Console.SetOut'](https://msdn.microsoft.com/en-us/library/system.console.setout(v = vs.110).aspx)? –
太棒了,非常感谢您的参考!这对我来说很完美。 – ira
很高兴我能帮到你。但这实质上是一种黑客行为,谨慎使用。看到我的答案。 –