Ho recentemente cercato di imparare gli aspetti orientati agli oggetti di F # e sono diventato curioso di sapere come limitare l'accesso a tipi/moduli nella lingua.Firma di file e Modificatori di accesso in F #
Più in particolare, voglio sapere la differenza tra scrivere questo:
Example.fsi
module Stack =
val foo : string
Example.fs
module Stack =
let foo = "foo"
let bar = "bar"
e in alternativa questo:
module Stack =
let foo = "foo"
let private bar = "bar"
Alla fine non realizzano esattamente la stessa cosa? Provenendo da uno sfondo C#, sono molto propenso a usare i modificatori di accesso sui file di firma (FSI). Sembrano essere più versatili (possono applicarsi a moduli/tipi in spazi dei nomi, ad esempio), mentre non ho alcuna situazione in cui i file di firma offrono qualcosa che i modificatori di accesso non lo fanno.
L'esempio non dovrebbe funzionare in ogni caso ;-) (lascia che foo _ = "bar") – Dario
Perché non dovrebbe funzionare? L'esempio si compila bene per me. – Noldorin
Il .fsi dichiara foo come una funzione, ma poi .fs lo definisce come un valore. – Brian