如何在f#中将浮点值写入文件

时间:2010-09-30 20:02:11

标签: f#

我试过以下代码我做错了什么?

// Test IO
// Write a test file
    let str : string[,] = Array2D.init 1 ASize (fun i j -> result.[i,j].ToString() ) 
    System.IO.File.WriteAllLines(@"test.txt", str );

2 个答案:

答案 0 :(得分:7)

代码中Array2D.init的第一个参数是否始终为1?如果是,那么你可以创建一维数组,它可以正常工作:

let str = Array.init ASize (fun j -> result.[0,j].ToString() )  
System.IO.File.WriteAllLines("test.txt", str ); 

如果您确实需要将2D数组写入文件,则可以将2D数组转换为一维数组。我能想到的最简单的方法是:

let separator = ""
let ar = Array.init (str.GetLength(0)) (fun i -> 
  seq { for j in 0 .. str.GetLength(1) - 1 -> str.[i, j] }
  |> String.concat separator )

这将生成一维数组(沿第一个坐标),然后沿第二个坐标聚合元素。它使用String.concat,因此您可以在一行中指定项目之间的分隔符。

答案 1 :(得分:3)

因为没有File.WriteAllLines的重载接受2d字符串数组。您应该将其转换为1d数组或seq< string>。