F# - 将Array转换为list

时间:2015-12-01 02:56:50

标签: arrays list f#

我正在将文件读入如下数组(注意我知道这是错误的代码):

let filename = if argv.[0] != null then argv.[0] else System.Console.ReadLine()
let data = File.ReadAllLines(filename)

我想对上面一行返回的数据执行F#map。我的问题是我只能在n F#列表上执行map,而不能System.String[]返回File.ReadAllLines()。我可以将标准.Net数组转换为F#列表。我确信我可以用不同的方式读取文件,或者通过手动将数组内容复制到列表来完成工作,但如果有一种简单的方法可以做到这一点会更容易。

2 个答案:

答案 0 :(得分:5)

您可以使用Array.toList来执行此操作。

let data2 = data |> Array.toList

或者您可以使用List.ofArray

let data2 = data |> List.ofArray

您也可以Array.map代替List.map,在这种情况下,您可能根本不需要映射到list

答案 1 :(得分:2)

由于File.ReadAllLines返回一个数组,您可以在其上使用Array.map。它的工作方式与List.map相同。

另一个选项是Seq.map,因为数组也实现了seq 'aIEnumerable<T>)接口。

正如其他人所指出的那样,您也可以使用Array.toListList.ofArray将数组转换为列表,但要注意此操作遍历数组并将其复制到列表中(因此&# 39;这样做的开销很小。)