0
如果我有以下接口創建數組常量與F#的界面的各個子類
type IParameterizable =
abstract member Parameters : unit -> seq<Parameter>
然後,我有一些工廠,創造IParameterizable
的各個子類let MakeA arg = ...
let MakeB arg = ...
let MakeC arg = ...
其中A ,B,C是IPa可參數化的子類。現在,如果我想使一個數組 字面
let contents = [| MakeA 0; MakeB 1; MakeC 2 |]
編譯器會抱怨,他們是不同類型的。但是,如果我這樣做
let contents = [| MakeA 0 :> IParameterizable
; MakeB 1 :> IParameterizable
; MakeC 2 :> IParameterizable
|]
這個工程,但是有點忙於眼睛。顯而易見的解決方案是讓工廠返回IParameterizable而不是具體類,但在其他情況下,我需要具體類而不是接口。
有沒有辦法只指定一次數組的類型,然後所有元素 將被隱式轉換或編譯器錯誤(如果轉換不可能)。
我想你也可以使用推斷的upcast功能:'MakeA 0:> _'。 – MisterMetaphor
@bradgonesurfing如果它解決了您的問題,您應該將其標記爲答案 – paul
我必須等待幾天才能讓系統標記我自己的答案爲正確答案。 – bradgonesurfing