generics - 特定泛型类型的扩展方法

标签 generics f# extension-methods type-constraints generic-type-argument

我正在尝试为绑定(bind)到 F# 中特定泛型类型参数的泛型类型创建各种扩展方法,但该语言似乎不允许我:

我想做的是如下所示:

type IEnumerable<int> with
    member this.foo =
        this.ToString()

然而它给了我编译器错误(在 int 关键字下划线):

Unexpected identifier in type name. Expected infix operator, quote symbol or other token.



以下确实有效,尽管它没有专门将泛型类型参数绑定(bind)到 int ,如我所愿:
type IEnumerable<'a> with
    member this.foo =
        this.ToString()

有什么方法可以在 F# 中实现这一目标 - 我可能只是使用了错误的语法吗?如果没有,如果有人可以提出解决方法,我将不胜感激,也许在某处使用类型约束。

最佳答案

不幸的是,这在当前版本的 F# 中是不可能的。查看相关问题 here .

关于generics - 特定泛型类型的扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1531580/

相关文章:

c# - 为什么参数化通用接口(interface)的 GetMethods() 返回非参数化 MethodInfo

generics - FSharpPlus divRem - 它是如何工作的?

android - 我们可以在 Android 中创建自定义 Synthetic Kotlin Extensions 吗?

C#、WinForms 和扩展方法

c# - 将标志转换为 IEnumerable<Enum> 的扩展方法,反之 (C#)

generics - 通用密封类的类型安全使用

c# - 在 C# 中使用接口(interface)作为泛型类的类型参数,限制为 "class"

c# - 删除 List<T> 中的备用元素

scala - 思考 Elm 中所见模式的名称以及是否有其他类似情况

linux - F#、Linux 和 makefile