2017-04-18 62 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 =私人...'为整个表示提供可访问性 。

实际上,如果您将“整个表示法”设置为私有,则无法构造记录,也无法访问其辅助修饰符范围之外的字段。