要創建我的類的順序,F# - 我可以使用類型名稱作爲默認構造函數嗎?
type MyInt(i:int) =
member this.i = i
[1;2;3] |> Seq.map(fun x->MyInt(x))
其中fun x->MyInt(x)
似乎是多餘的。它會更好,如果我能寫Seq.map(MyInt)
但我不能。我能想到的一種解決方法是定義一個單獨的功能
let myint x = MyInt(x)
[1;2;3] |> Seq.map(myint)
有沒有更好的方法來做到這一點?
你的'定義New'不會在VS11 Beta版編譯我。然而,一個更簡單的變體會:「讓內聯新的x =(^ t:(new:^ u - >^t)x)'。 – kvb 2012-04-10 20:33:07
我首先嚐試了這個方法,但是當使用^ t:(new:^ u - >^t)時,顯式約束'^ t不能在VS2010中編譯。很高興知道有一個更簡單的方法來做到這一點。 – Daniel 2012-04-10 20:42:30
奇怪的編譯器只支持形式'新的顯式構造的限制:單元 - >「t'(這是在.NET中的元數據直接表示的),但你能明顯使用更普遍的構造函數約束_invocation expressions_,讓編譯器推斷約束。這絕對是系統中的一個漏洞。 – kvb 2012-04-10 21:33:54