在C#中,可以使用非常简洁的语法构建对象树:
甚至可以这样说:
var button = new Button() { Content = "Foo" };
在F#中是否有一种惯用的方式来做类似的事情?
记录(Records)具有良好的语法:
let button = { Content = "Foo" }
据我所知,对象的构建似乎是一件不同的事情。通常情况下,我会编写以下代码:
let button = new Button()
button.Content <- "Foo"
甚至可以这样说:
let button =
let x = new Button()
x.Content <- "Foo"
x
解决问题的一种方法是使用自定义流畅组合运算符:
// Helper that makes fluent-style possible
let inline (.&) (value : 'T) (init: 'T -> unit) : 'T =
init value
value
let button = new Button() .& (fun x -> x.Content <- "Foo")
有没有内置的语法可以实现这个目标,或者推荐其他方法?