假设我有 n 个(在本例中为 7)给定的输入:
10
20
30
40
50
60
70
如何读取所有输入并将它们存储在列表/数组中?
我尝试了以下代码:
let inputList = [
while (let line = Console.ReadLine()) <> null do
line |> int
]
这个想法是读取直到我得到一个空行。
但我遇到了以下错误:
这个“let”后面的块未完成。需要一个表达式。
假设我有 n 个(在本例中为 7)给定的输入:
10
20
30
40
50
60
70
如何读取所有输入并将它们存储在列表/数组中?
我尝试了以下代码:
let inputList = [
while (let line = Console.ReadLine()) <> null do
line |> int
]
这个“let”后面的块未完成。需要一个表达式。
要以函数式风格完成这个任务,你可以使用Seq.initInfinite
从控制台创建一个序列。 然后,您需要使用Seq.takeWhile
在获取null值时终止此列表。 除此之外,您可以使用所有可用的Seq
模块函数,包括Seq.toList
。
let read _ = Console.ReadLine()
let isValid = function null -> false | _ -> true
let inputList = Seq.initInfinite read |> Seq.takeWhile isValid |> Seq.toList
CTRL+Z
,Console.ReadLine()
将返回 null
。我只能假设这是 OP 的意图;否则,可以在匹配表达式中添加一个空字符串子句。 - Tim RogersSystem.String.IsNullOrEmpty
,这样你就可以同时处理两种情况。 - Gus