17
有沒有辦法限制一個類型參數從另一個派生?如何約束另一個類型參數
type Foo<'T, 'U when 'U :> 'T> =
member x.Bar() : 'T = upcast Unchecked.defaultof<'U>
此代碼產生以下錯誤:
錯誤1無效約束:用於約束的類型是密封的,這意味着該約束只能通過滿足至多一個溶液
錯誤2使用此類型參數的方式將其限制爲始終爲'T'
錯誤3從'T到'T0類型的靜態強制涉及基於不確定類型在這個節目點之前的信息。某些類型不允許使用靜態強制。需要進一步的類型註釋。
警告4此構造會導致代碼不如類型註釋所示的通用代碼。類型變量'U被限制爲類型''T'。
有沒有我們可以投票選擇包含此功能的地方? – Martin 2013-12-30 23:01:26
找到它,它在這裏:http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/3942302-provide-covariance-contravariance-language-support – Martin 2013-12-30 23:10:12
用戶語音https:// fslang的新鏈接。 uservoice.com/forums/245727-f-language/suggestions/5927125-solve-subtype-constraints-of-the-form-ab-when – 2015-08-07 04:08:13