2008-11-28 8 views
35

Dies ist eine einfache Frage, aber ich habe Probleme beim Aufspüren einer Antwort, da F # so neu ist. Ich wollte nur in einer F # Konsolenanwendung zu unterbrechen, so schrieb ich:F #: Dieser Ausdruck sollte den Typ 'unit' haben, aber hat den Typ 'ConsoleKeyInfo'

Console.ReadKey()

Aber dies gibt die Warnung: Dieser Ausdruck Typen ‚Einheit‘ haben sollte, hat aber geben ‚ConsoleKeyInfo‘. Jede Hilfe würde sehr geschätzt werden.

Danke, - Lee

+0

Sie werden so ziemlich die gleiche Warnung in OCaml erhalten, BTW. Sie können es in F # mit dem Flag --no-warn deaktivieren (obwohl ich nicht sicher bin, was die Codenummer für diese spezielle Warnung ist). –

Antwort

62

Lösung:

Console.ReadKey() |> ignore 

Erläuterung: Console.ReadKey() ein Objekt vom Typ 'ConsoleKeyInfo' gibt, aber Sie es als eine Anweisung ohne den Rückgabewert etwas zuweisen. F # warnt dich, dass du einen Wert ignorierst. ignore nimmt jeden Typ und gibt nichts zurück. Es könnte so definiert werden:

let ignore _ =() 
+10

Alternativen: 'ignore (Console.ReadKey())' oder sonst 'let _ = Console.ReadKey()' – gliderkite

Verwandte Themen