2011-11-22 11 views
6

Tengo un problema para entender el uso de paréntesis en F #. Para ilustrar con un ejemplo simple, las 2 aplicaciones de consola siguientes se comportan de manera muy diferente. El primero no esperó a que yo escribo en cualquier cosa:Uso de paréntesis en F #

open System 
let Main = 
    Console.WriteLine "Hello" 
    Console.ReadLine 

mientras que la segunda lo hace:

open System 
let Main = 
    Console.WriteLine "Hello" 
    Console.ReadLine() 

¿Cómo debería entender la diferencia?

+1

El mismo error también está en Principal. Necesita argumentos, o de lo contrario es solo un valor. La razón por la que todavía se ejecuta, es que el valor tiene que ser evaluado, por lo que simplemente se ejecuta, pero todavía está mal hacerlo de esta manera. Normalmente tendría 'args' como argumentos, y devolvería un int como código de salida de la función principal. –

Respuesta

10

Si una función no toma parámetros, especifique el valor unitario() como el argumento, como en la siguiente línea de código.

initializeApp() 

El nombre de una función por sí mismo es sólo un valor de la función, por lo que si se omite el paréntesis que indican el valor de la unidad, la función es meramente referenciado, no se llama.

http://msdn.microsoft.com/en-us/library/dd233229.aspx

Es por eso que tiene que hacer en lugar de Console.ReadLine()Console.ReadLine (éste vuelve un delegado función)

+0

Tenga en cuenta que también podría leer Console.ReadLine como una función de un parámetro que es de tipo unit (()). –

Cuestiones relacionadas