2008-11-28 16 views
35

Esta es una pregunta simple, pero estoy teniendo problemas para encontrar una respuesta ya que F # es muy nueva. Sólo quería hacer una pausa en una aplicación C# consola, por lo que escribí:F #: Esta expresión debería tener el tipo 'unidad', pero tiene el tipo 'ConsoleKeyInfo'

Console.ReadKey()

Pero esto da la advertencia: Esta expresión debe tener un tipo de 'unidad', pero tiene escribir 'ConsoleKeyInfo'. Cualquier ayuda sería muy apreciada.

Gracias, - Lee

+0

Recibirá prácticamente la misma advertencia en OCaml, por cierto. Puede desactivarlo en F # con el indicador --no-warn (aunque no estoy seguro de cuál es el número de código para esa advertencia en particular). –

Respuesta

62

Solución:

Console.ReadKey() |> ignore 

Explicación: Console.ReadKey() devuelve un objeto de tipo 'ConsoleKeyInfo', sino que se está usando como una declaración sin asignar el valor devuelto a nada. Entonces F # le advierte que está ignorando un valor. ignore toma cualquier tipo y no devuelve nada. Podría definirse así:

let ignore _ =() 
+10

Alternativas: 'ignore (Console.ReadKey())' o bien 'let _ = Console.ReadKey()' – gliderkite

Cuestiones relacionadas