我想知道是否有一种好的方法来定义一个函数captureOutput
,它接受一个可能包含打印语句的函数f
,并返回f
打印的任何内容。例如:
let f x = print "%s" x
let op = captureOutput (f "Hello World")
val op : string = "Hello World"
我在思考,也许有一种好方法可以使用
Console.ReadLine()
来异步完成这个操作,但我还没有想出来。祝好。编辑:
基于Fyodor Soikin的评论,以下代码实现了我的需求:
let captureOutput f x =
let newOut = new IO.StringWriter()
Console.SetOut(newOut)
f x
Console.SetOut(Console.Out)
newOut.ToString()
Console.SetOut
吗? - Fyodor Soikin