Niedawno próbowałem nauczyć się zorientowanych obiektowo aspektów języka F # i zacząłem się zastanawiać, jak ograniczyć dostęp do typów/modułów w tym języku.Pliki sygnatur i modyfikatory dostępu w języku F #
Dokładniej, chcę znać różnicę między piśmie to:
Example.fsi
module Stack =
val foo : string
Example.fs
module Stack =
let foo = "foo"
let bar = "bar"
i alternatywnie to:
Czy nie osiągają dokładnie tego samego w końcu? Pochodzę z tła C#, jestem skłonny po prostu użyć modyfikatorów dostępu do plików sygnatur (FSI). Wydaje się, że są bardziej uniwersalne (mogą na przykład dotyczyć modułów/typów w przestrzeniach nazw), podczas gdy ja nie mam żadnej sytuacji, w której pliki sygnatur oferują coś, czego nie mają modyfikatory dostępu.
Twój przykład i tak nie powinien działać ;-) (let foo _ = "bar") – Dario
Dlaczego nie powinien działać? Przykład kompiluje się dobrze dla mnie. – Noldorin
.fsi deklaruje foo jako funkcję, ale potem .fs definiuje ją jako wartość. – Brian