Gần đây tôi đã cố gắng tìm hiểu các khía cạnh hướng đối tượng của F # và đã trở nên tò mò về cách hạn chế quyền truy cập vào các loại/mô-đun bằng ngôn ngữ.Chữ ký tập tin và truy cập Modifers trong F #
Cụ thể hơn, tôi muốn biết sự khác biệt giữa văn bản này:
Example.fsi
module Stack =
val foo : string
Example.fs
module Stack =
let foo = "foo"
let bar = "bar"
và cách khác này:
module Stack =
let foo = "foo"
let private bar = "bar"
Chúng không hoàn thành chính xác điều tương tự cuối cùng? Đến từ nền C#, tôi có xu hướng sử dụng các công cụ sửa đổi truy cập trên các tệp chữ ký (FSI). Họ dường như linh hoạt hơn (có thể áp dụng cho các mô-đun/loại trong không gian tên, ví dụ), trong khi tôi không có bất kỳ tình huống nào trong đó các tệp chữ ký cung cấp thứ gì đó mà các công cụ sửa đổi truy cập không làm.
Ví dụ của bạn không được hoạt động ;-) (để foo _ = "bar") – Dario
Tại sao nó không hoạt động? Ví dụ biên dịch tốt cho tôi. – Noldorin
.fsi tuyên bố foo là một hàm, nhưng sau đó .fs định nghĩa nó làm giá trị. – Brian