使用WriteLine打印输出文件

时间:2015-11-12 09:09:50

标签: file f#

我使用以下代码在mylist文件中编写*.txt

let outFile = new StreamWriter("4.txt")
let writeNumbersInFile (numbersToupleList)=function
    |[] -> ()
    |head::tail -> outFile.WriteLine(string (head))



let mylist= [1;2;3;4]
writeNumbersInFile mylist
outFile.Close()

这段代码成功创建了一个4.txt,但是当我打开它时,那里什么都没有,但我希望看到

1
2
3
4

1 个答案:

答案 0 :(得分:3)

这应该有用 - 而不是我如何删除numbersToupleList参数 - 你不需要它(并且你没有使用它)因为function有一个隐含的参数:

let outFile = new StreamWriter("4.txt")
let rec writeNumbersInFile =
    function
    |[] -> ()
    |head::tail -> 
        outFile.WriteLine (string head)
        writeNumbersInFile tail


let mylist= [1;2;3;4]
writeNumbersInFile mylist
outFile.Flush()

当然不需要递归(有更高阶函数可以为您执行此操作) - 您可以改为使用Seq.iterList.iter

let outFile = new StreamWriter("4.txt")

let writeNumbersInFile =
    Seq.iter (string >> outFile.WriteLine)

let mylist= [1;2;3;4]
writeNumbersInFile mylist
outFile.Flush()

现在你应该把它重构成这样的东西 - 注意我必须给出file的类型,以便F#可以决定使用哪个StreamWriter构造函数,并且这将处理{在StreamWriterwriteNumbersInFile)完成工作后{1}} - 所以在GC启动之前你不会保留文件句柄:

use