在F#中将seq <string>转换为string []

pro*_*eek 1 string f#

从这个例子这篇文章有一个例子

open System.IO

let lines = 
  File.ReadAllLines("tclscript.do")
  |> Seq.map (fun line ->
      let newLine = line.Replace("{", "{{").Replace("}", "}}")
      newLine )

File.WriteAllLines("tclscript.txt", lines)
Run Code Online (Sandbox Code Playgroud)

编译时出错.

error FS0001: This expression was expected to have type
    string []    
but here has type
    seq<string> 
Run Code Online (Sandbox Code Playgroud)

如何将seq转换为string []以删除此错误消息?

pbl*_*cci 7

基于Jaime的答案,因为ReadAllLines()返回一个数组,只需使用Array.map而不是Seq.map

open System.IO

let lines = 
  File.ReadAllLines("tclscript.do")
  |> Array.map (fun line ->
      let newLine = line.Replace("{", "{{").Replace("}", "}}")
      newLine )

File.WriteAllLines("tclscript.txt", lines)
Run Code Online (Sandbox Code Playgroud)


Jam*_*mie 6

您可以使用

File.WriteAllLines("tclscript.txt", Seq.toArray lines)
Run Code Online (Sandbox Code Playgroud)

或者只是附上

|> Seq.toArray
Run Code Online (Sandbox Code Playgroud)

在Seq.map调用之后.

(另请注意,在.NET 4中,WriteAllLines的重载确实占用了Seq)