我试过以下代码我做错了什么?
// 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 );
答案 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>。