Unit (Tipo)

El tipo unit indica la ausencia de un valor concreto; el tipo unit solo tiene un valor, que actúa como marcador de posición cuando no existe o no se necesita ningún otro valor.

Sintaxis

// The value of the unit type.
()

Comentarios

Toda expresión F# se debe evaluar como un valor. En el caso de las expresiones que no generan un valor que sea de interés, se usa el valor de tipo unit. El tipo unit es similar al tipo void en lenguajes como C# y C++.

El tipo unit tiene un valor único y ese valor se indica mediante el token ().

El valor del tipo unit se usa a menudo en la programación de F# para conservar la posición en la que la sintaxis del lenguaje requiere un valor, pero no se necesita o no se desea ninguno. Un ejemplo podría ser el valor devuelto de una función printf. Dado que las acciones importantes de la operación printf se producen en la función, esta no tiene que devolver un valor real. Por lo tanto, el valor devuelto es de tipo unit.

Algunas construcciones esperan un valor unit. Por ejemplo, se espera que un enlace do o cualquier código del nivel superior de un módulo se evalúe como un valor unit. El compilador notifica una advertencia cuando un enlace o código do del nivel superior de un módulo genera un resultado distinto del valor unit, que no se usa, como se muestra en el ejemplo siguiente.

let function1 x y = x + y
// The next line results in a compiler warning.
function1 10 20
// Changing the code to one of the following eliminates the warning.
// Use this when you do want the return value.
let result = function1 10 20
// Use this if you are only calling the function for its side effects,
// and do not want the return value.
function1 10 20 |> ignore

Esta advertencia es una característica de la programación funcional; no aparece en otros lenguajes de programación de .NET. En un programa puramente funcional, en el que las funciones no tienen efectos secundarios, el valor devuelto final es el único resultado de una llamada de función. Por lo tanto, cuando se omite el resultado, se trata de un posible error de programación. Aunque F# no es un lenguaje de programación puramente funcional, se recomienda seguir el estilo de la programación funcional siempre que sea posible.

Consulte también