如何在F#中将浮点数写入文件

3
我尝试了以下代码,但出现了什么问题?
// 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个回答

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,因此您可以在单行上指定项之间的分隔符。

3

因为没有接受2D字符串数组的重载版本,所以不能使用File.WriteAllLines。你需要把它转换成1D字符串数组或seq<string>。


谢谢,我已经完成了以下代码,它完美地工作了。// 测试IO // 编写测试文件 let vecstr = ShapPack.TwoDVector twoDimensionalArray let str : string[] = Array.init (ArraySize*ArraySize) (fun i -> vecstr.[0,i].ToString() ) System.IO.File.WriteAllLines(@"test.txt", str ); - brendon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接