相关疑难解决方法(0)

如何将一个类型参数限制为另一个

有没有办法约束一个类型参数从另一个派生?

type Foo<'T, 'U when 'U :> 'T> = 
    member x.Bar() : 'T = upcast Unchecked.defaultof<'U>
Run Code Online (Sandbox Code Playgroud)

此代码产生以下错误:

错误1无效约束:用于约束的类型是密封的,这意味着约束只能通过最多一个解决方案来满足

错误2此类型参数的使用方式将其限制为始终为"T"

错误3从类型'T到'T0的静态强制涉及基于此程序点之前的信息的不确定类型.某些类型不允许静态强制.需要进一步的类型注释.

警告4此构造使代码不如类型注释所指示的那样通用.类型变量'U已被约束为类型''T'.

f#

20
推荐指数
1
解决办法
1731
查看次数

标签 统计

f# ×1