Recientemente he estado tratando de aprender los aspectos orientados a objetos de F # y me he vuelto curioso sobre cómo restringir el acceso a los tipos/módulos en el idioma.Archivos de firma y modificadores de acceso en F #
Más específicamente, quiero saber la diferencia entre escribir esto:
Example.fsi
module Stack =
val foo : string
Example.fs
module Stack =
let foo = "foo"
let bar = "bar"
y, alternativamente, esto:
module Stack =
let foo = "foo"
let private bar = "bar"
¿No logran exactamente lo mismo al final? Viniendo de un fondo de C#, me inclino mucho a usar los modificadores de acceso sobre archivos de firma (FSI). Parecen ser más versátiles (pueden aplicarse a módulos/tipos en espacios de nombres, por ejemplo), mientras que no tengo ninguna situación en la que los archivos de firma ofrezcan algo que los modificadores de acceso no tienen.
Su ejemplo no debería funcionar de todos modos ;-) (let foo _ = "bar") – Dario
¿Por qué no debería funcionar? El ejemplo compila bien para mí. – Noldorin
El .fsi declara foo como una función, pero luego el .fs lo define como un valor. – Brian