0
我對此很誠懇地感到困惑。 爲什麼不這樣做 - 我是不是明確地告訴'T
確實是View
?上傳和泛型
let foo<'T when 'T :> View> (v:'T):View = v
error FS0001: This expression was expected to have type View
but here has type 'T
我對此很誠懇地感到困惑。 爲什麼不這樣做 - 我是不是明確地告訴'T
確實是View
?上傳和泛型
let foo<'T when 'T :> View> (v:'T):View = v
error FS0001: This expression was expected to have type View
but here has type 'T
MSDN:
在許多面向對象的語言,上溯造型是隱式的;在F#中,規則略有不同。上傳是在將參數傳遞給對象類型的方法時自動應用的。但是,對於模塊中的限制功能,上傳不是自動的,除非參數類型被聲明爲靈活類型。
:>
運算符執行靜態轉換,這意味着轉換的成功是在編譯時確定的。
最小代碼將是
let foo<'T when 'T :> View> (v:'T):View = v :> _
爲什麼不使用[柔性類型](https://msdn.microsoft.com/en-us/library/dd233198.aspx)? '讓foo(v:#View)= v:> View' – kaefer