2015-04-22 43 views
1

我試圖迫使上的功能的限制,例如,第一個參數的類型有如下返回Async<'T>成員:如何強制約束上的一個成員的返回類型

let inline private f (a : ^T) = (^T : (static member g : string -> ^T Async) T) 

然而,我我得到了一個T未定義的編譯器錯誤。有沒有可能以這種方式定義一個約束?

回答

1

您正在使用「成員約束調用表達式」,並且成員需要一個字符串作爲其輸入,但您剛剛獲得了一個未綁定的標識符。如果你真的想調用這個方法,那麼只需要一個字符串來代替標識符T

如果你只是想約束類型參數但實際上沒有調用成員你能做到這一點是這樣的:

let inline private f (a : ^T when ^T : (static member g : string -> ^T Async) = ... 

但你需要填寫在體內的東西。

相關問題