`type private MyRecord = {...}`和`type MyRecord = private {...}之间的区别是什么?

时间:2017-04-18 16:22:13

标签: .net f# functional-programming record encapsulation

之间的区别是什么
type private MyRecord =
    { id : int }

type MyRecord = private
    { id : int }

从我读到的内容:

  • 在第一种情况下,类型是私有的,只能在文件中访问。
  • 在第二种情况下,类型是公共的,但所有字段都是私有的。我们可以通过属性公开重要的。

1 个答案:

答案 0 :(得分:3)

正如评论所指出的那样,你已经得到了很多指导。有趣的是,这个事实在F# Language Specification中没有明确提及,但可以从试图使记录字段保密的错误中推断出来,例如: type MyRecord = { private id : int }

  

记录字段不允许使用辅助功能修饰符。使用'输入   R =内部......'或者'键入R = private ...'提供辅助功能   整个代表。

实际上,如果你做了整个表示" private,您无法构建记录,也无法访问其可访问性修饰符范围之外的字段。