f#

¿Sintaxis de acceso directo de F#para las propiedades?



(3)

Para la sintaxis normal getter / setter propiedad

let mutable myInternalValue member this.MyProperty with get() = myInternalValue and set(value) = myInternalValue <- value

¿hay un atajo, similar al siguiente en C #?

someType MyProperty { get; set; }

Si hay uno, parece que soy incapaz de encontrarlo ...


¿hay un atajo, similar al siguiente en C #?

No lo creo (no se muestra nada en el resumen de la sintaxis de "Expert F #"), y la sintaxis de F # ya es bastante breve en comparación con la sintaxis completa que se necesita en C #.


F # 3 tiene propiedades implementadas automáticamente para que pueda declarar propiedades sin declarar el campo de respaldo.

Ejemplo tomado de Properties(F#) en MSDN:

type MyClass() = member val MyProperty = "" with get, set


No hay un atajo para crear la propiedad get / set en F #, pero si quiere una propiedad con solo get , puede usar la siguiente sintaxis simple:

type Test(n) = let myValue = n * 2 member x.Property = // Evaluated each time you access property value myValue + 5

Dado que F # es un lenguaje funcional, los tipos F # son a menudo inmutables. Esta sintaxis hace que sea muy fácil definir tipos inmutables, por lo que también lo alienta a usar un buen estilo de programación funcional en F #.

Sin embargo, estoy de acuerdo en que un acceso directo para get / set propiedades sería muy útil, especialmente cuando se escribe algún código que necesita interoperar con C # / otras bibliotecas .NET.

EDITAR (5 años después ...): Esto se agregó en F # 3.0, como muestra la respuesta de Ben :-)