2017-04-18 67 views
2

什麼什麼類型的私人MyRecord之間`的差異= {...}`和`型MyRecord =私人{...}`

type private MyRecord = 
    { id : int } 

而且

type MyRecord = private 
    { id : int } 

之間的差異從我讀的是:

  • 在第一種情況下,類型是私有的,只能在文件中訪問。
  • 在第二種情況下,類型是公開的,但所有字段都是私人的。我們可以通過屬性公開重要的。
+6

對我來說,你已經回答了你的問題。也許你應該澄清你想知道的更多。 –

回答

3

正如評論所指出的,你已經得到了很多釘子。有趣的是,這個事實在F# Language Specification中沒有明確提到,但是可以從嘗試使記錄字段保密時產生的錯誤推斷出來,例如, type MyRecord = { private id : int }

記錄字段不允許使用輔助功能修飾符。使用'輸入 R =內部...'或'輸入R =私人...'爲整個表示提供可訪問性 。

實際上,如果您將「整個表示法」設置爲私有,則無法構造記錄,也無法訪問其輔助修飾符範圍之外的字段。