什么是初始化复杂记录类型最简单的技术?

时间:2016-09-01 17:23:53

标签: f#

用于初始化复杂记录类型的最简单的技术是什么?

我想做以下事情:

type BenefitsOverviewViewModel() =

    member val Overview:BenefitsOverview = null with get,set

当然,null对于初始化此属性无效。

但是,我计划稍后使用外部数据源初始化此属性。

是否有任何选项可以初始化复杂记录而无需为每个成员识别和分配值?

2 个答案:

答案 0 :(得分:3)

是否要在创建和外部源初始化之间使用记录类型?

正如@Helge所说,也许只是一个选择 - 虽然他们的答案很好,但还有其他方法。

其中一个是将复杂记录类型分解为较小的记录类型,并在拥有数据时将它们放在一起。每个步骤都相对较小,但最终会有多个对象。另一方面,这种方法不允许您表示单一类型的错误/未完全初始化状态。

另一个可能是创建一个"构造函数"将缺失值作为参数并关闭其余参数以创建大记录。返回此函数,以便稍后可以使用其余数据调用它以生成完全初始化的值。

答案 1 :(得分:2)

也许。努夫说。或?

你想说出类似于"可能是它的初始化"或者"也许不是" ...

所以也许你有一些,或者你没有。选项是你的。

这比用某些东西初始化更好。或者没有。

如果用某些东西进行了初始化,那么如果什么都没有,你将如何保持这些东西什么都没有?

既然它无法被修改,为什么在它实际上什么都没有的时候初始化什么呢?

每一次改变,无论是什么,或者什么都不改变,都会重现一切。你甚至可能都不知道是否有什么东西,或者说什么都没有改变。

这是一个简单的方法吗?

我说选项是你的吗?

否则你可以做得更好"建模比再次。使用DU之类的:

type MyRecordsAre = 
 | Initialized of MyRecords 
 | NotInitializedYet

然后你甚至可以做类似的事情:

type MyRecordsAre = 
 | Initialized of MyRecords 
 | NotInitializedYet
 | InitializedButNotVerified of MyRecords
 | ReadFromOracleDbAndVerfiedAndReadyForFurtherHandling of MyRecords
 | ReadFromFileButNotYetValidated of MyRecords
 | FuckenDoNotTouchThisAnymore of MyRecords

突然之间,你也接近模仿,有点像状态和东西......

然后,您可以看到它什么都不是,甚至可以看到发生了什么或者可能发生什么。 Yepp,甚至可能决定下一步做些什么。除非没什么。实际上,如果它什么也没有。或者实际上让它从某种东西变为零。或者甚至不让任何人做某事,不管它是什么都没有。如果你想要那个选项。

选项仍然是你的。

现在跑步,按照你之前的说法做。阅读更多。特别是https://fsharpforfunandprofit.com/

也许。就在那时......

好的,我会去同化并再次被带到楼上......或者? ; - )

https://vimeo.com/113588389#t=3m