【发布时间】:2021-03-11 18:59:33
【问题描述】:
创建约束时如何指定可区分联合的类型?我应该写什么而不是DiscriminatedUnion?
let f<'U when 'U :> DiscriminatedUnion> ()
【问题讨论】:
-
所以
'U可以是any 有区别的联合,但不是记录类型?我不认为这是可能的。这是list of constraints supported by F#。此外,我不明白这个约束会完成什么。换句话说,f将如何利用'U在编译时是可区分联合这一事实? -
DU 内部只是一个类,参见decompilation。 DU 和记录都没有任何基类。您可以对 5 个接口进行约束,但 DU 和记录都会匹配它
标签: generics f# discriminated-union