最近我学习了一点C#,之前主要使用F#。我发现‘对象构造函数’是一种让人误以为在处理函数式对象的好方法。
例如:
let x = new Something()
x.Key <- 1
x.Value <- 2
由于数值的明显变异,这让人感到非常不舒服。特别是如果我们保持对象只写一次,则感觉非常不必要。在C#中,可以像这样初始化对象:
var x = new Something() { Key = 1, Value = 2 };
这看起来更美观,实际上感觉就像使用记录一样(几乎),显然只是糖,但很好。
问:假设我们对`Something`没有控制权(假装它来自某个C#库),在F#中是否可能使用这种简写初始化方式?如果不行,为什么?