Novedades de F# 4.6
F# 4.6 agrega varias mejoras al lenguaje F#.
Introducción
F# 4.6 está disponible en todas las distribuciones de .NET Core y las herramientas de Visual Studio. Introducción a F# para obtener más información.
Registros anónimos
Los registros anónimos son un nuevo tipo de F# introducido en F# 4.6. Se trata de agregados simples de valores con nombre que no es necesario declarar antes de su uso. Puede declararlos como estructuras o tipos de referencia. De forma predeterminada, son tipos de referencia.
open System
let getCircleStats radius =
let d = radius * 2.0
let a = Math.PI * (radius ** 2.0)
let c = 2.0 * Math.PI * radius
{| Diameter = d; Area = a; Circumference = c |}
let r = 2.0
let stats = getCircleStats r
printfn "Circle with radius: %f has diameter %f, area %f, and circumference %f"
r stats.Diameter stats.Area stats.Circumference
También se pueden declarar como estructuras cuando se quiere agrupar tipos de valor y funcionan en escenarios en los que el rendimiento es fundamental:
open System
let getCircleStats radius =
let d = radius * 2.0
let a = Math.PI * (radius ** 2.0)
let c = 2.0 * Math.PI * radius
struct {| Diameter = d; Area = a; Circumference = c |}
let r = 2.0
let stats = getCircleStats r
printfn "Circle with radius: %f has diameter %f, area %f, and circumference %f"
r stats.Diameter stats.Area stats.Circumference
Son muy eficaces y se pueden usar en numerosos escenarios. Obtenga más información en Registros anónimos.
Funciones ValueOption
El tipo ValueOption que se agregó en F# 4.5 ahora tiene "paridad de función enlazada al módulo" con el tipo Option. Estos son algunos de los ejemplos más usados:
// Multiply a value option by 2 if it has value
let xOpt = ValueSome 99
let result = xOpt |> ValueOption.map (fun v -> v * 2)
// Reverse a string if it exists
let strOpt = ValueSome "Mirror image"
let reverse (str: string) =
match str with
| null
| "" -> ValueNone
| s ->
str.ToCharArray()
|> Array.rev
|> string
|> ValueSome
let reversedString = strOpt |> ValueOption.bind reverse
Esto permite usar ValueOption igual que Option en escenarios en los que tener un tipo de valor mejora el rendimiento.
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente las Cuestiones de GitHub como mecanismo de retroalimentación para el contenido y lo sustituiremos por un nuevo sistema de retroalimentación. Para más información, consulta:Enviar y ver comentarios de