这是一个简单的问题,但由于F#太新,我无法追踪答案。我只是想在F#控制台应用程序暂停,所以我写了:F#:此表达式应该有'单元'类型,但是类型为'ConsoleKeyInfo'
Console.ReadKey()
但这给出了警告:此表达式的类型应该是“单位”,但有类型“ConsoleKeyInfo”。任何帮助将不胜感激。
感谢, - 李
这是一个简单的问题,但由于F#太新,我无法追踪答案。我只是想在F#控制台应用程序暂停,所以我写了:F#:此表达式应该有'单元'类型,但是类型为'ConsoleKeyInfo'
Console.ReadKey()
但这给出了警告:此表达式的类型应该是“单位”,但有类型“ConsoleKeyInfo”。任何帮助将不胜感激。
感谢, - 李
解决方案:
Console.ReadKey() |> ignore
说明:Console.ReadKey()
返回类型“ConsoleKeyInfo”的对象,但你使用它作为一个声明不分配返回值到任何东西。所以F#警告你,你忽略了一个值。 ignore
采取任何类型,不返回任何内容。它可以这样定义:
let ignore _ =()
替代选项:`ignore(Console.ReadKey())`或者`let _ = Console.ReadKey()` – gliderkite 2012-06-10 20:20:43
您将在OCaml中获得几乎相同的警告。您可以在F#中使用--no-warn标志禁用它(尽管我不确定该特定警告的代码是什么)。 – 2008-12-02 23:06:31