读取f#中未知的行数

时间:2015-01-06 09:38:31

标签: f# f#-3.0 c#-to-f#

假设我有n(在这种情况下为7)输入

  

10

     

20

     

30

     

40

     

50

     

60

     

70

如何读取所有输入并将它们存储在列表/数组中?

我试过了,

let inputList = [
    while (let line = Console.ReadLine()) <> null do
        line |> int
]

我的想法是阅读,直到我得到一个空行。

但是我收到以下错误,

  

阻止这样做&#39;让&#39;尚未完成。期待一个表达。

1 个答案:

答案 0 :(得分:7)

要以功能样式执行此操作,您可以使用Seq.initInfinite从控制台创建序列。 然后,当您使用Seq.takeWhile获取空值时,需要终止此列表。除此之外,您还可以使用所有Seq模块功能,包括Seq.toList

let read _ = Console.ReadLine()
let isValid = function null -> false | _ -> true
let inputList = Seq.initInfinite read |> Seq.takeWhile isValid |> Seq.toList