此表达式应为"unit"类型,但类型为"ConsoleKeyInfo"

Lee*_*son 35 f# functional-programming unit-type

我只想暂停在F#控制台应用程序中,所以我写道:

Console.ReadKey()

但这给出了警告: This expression should have type 'unit', but has type 'ConsoleKeyInfo'.

我该怎么做才能解决这个问题?

nam*_*min 62

解:

Console.ReadKey() |> ignore
Run Code Online (Sandbox Code Playgroud)

说明:Console.ReadKey()返回"ConsoleKeyInfo"类型的对象,但您将其用作语句而不将返回值赋给任何内容.所以F#警告你,你忽略了一个价值.ignore采取任何类型,什么也不返回.它可以这样定义:

let ignore _ = ()
Run Code Online (Sandbox Code Playgroud)

  • 替代方案:`ignore(Console.ReadKey())`或者`let _ = Console.ReadKey()` (11认同)