如何在F#中为ImmutableHashSet的嵌套Builder类添加扩展方法?
在F#中为ImmutableHashSet的嵌套Builder类添加扩展方法
你可以通过以下两种可行方式实现需求:
方法一:直接扩展嵌套的泛型Builder类型
在F#中,可直接针对Builder泛型类型本身编写扩展,无需通过外层ImmutableHashSet<'t>间接引用,语法如下:
open System.Collections.Immutable type ImmutableHashSet.Builder<'t> with member this.NewMember() = // 编写你的扩展方法逻辑 printfn $"扩展方法已调用,当前Builder元素数:{this.Count}"
CLR中嵌套类本质是独立类型,F#会自动解析ImmutableHashSet.Builder<'t>与ImmutableHashSet<'t>.Builder的嵌套关系,因此该语法有效。
方法二:用类型别名简化引用
若觉得直接引用嵌套类型不够直观,可先定义类型别名指向Builder类,再扩展该别名:
open System.Collections.Immutable // 定义别名指向嵌套的Builder类 type ImmutableHashSetBuilder<'t> = ImmutableHashSet<'t>.Builder // 扩展别名对应的类型 type ImmutableHashSetBuilder<'t> with member this.NewMember() = // 实现扩展逻辑 ()
验证代码
用以下代码测试扩展方法是否正常工作:
let builder = ImmutableHashSet.CreateBuilder<int>() builder.Add(1) builder.Add(2) // 调用扩展方法 builder.NewMember()
内容的提问来源于stack exchange,提问作者Franco Tiveron
相关产品推荐
相关产品推荐

