gpt4 book ai didi

f# - 灵活的类型和泛型参数

转载 作者:行者123 更新时间:2023-12-04 05:08:49 25 4
gpt4 key购买 nike

我想知道为什么第二行告诉我灵活类型已被限制。
显然可以绕过它,但是否可以从中吸取一些教训?

type DataTable with
static member FromObjArray (input : seq<#seq<'T>>) = () //keep the flexibility
static member FromObjArray<'T> (input : seq<#seq<'T>>) = () //constrained to seq

最佳答案

我认为灵活类型在第二种情况下受到限制,因为您显式地将该方法声明为只有一个类型参数的泛型方法 'T .一个灵活的类型被去糖化为另一个类型参数,如果你使参数显式,编译器就不能添加那个(隐藏的)类型参数。

第一个声明对应于这样的事情:

static member FromObjArray<'T, 'S when 'S :> seq<'T>> (input : seq<'S>) =  ()

如果你明确说该方法只接受类型参数 'T ,则编译器无法生成这样的方法(因为它需要为序列派生的类型添加 'S)。

关于f# - 灵活的类型和泛型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15155718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com