我可以使用类型缩写作为泛型类中的别名吗?

时间:2018-05-11 18:39:01

标签: f#

我正在使用自定义指针大小创建一个对象池类。一直输入名称和通用参数会很繁琐。我可以这样做:

type ObjectPool<'P, 'T when 'T: unmanaged>(size: int) =
  type PTR = TypedPointer<'P, 'T>

  ... use PTR instead of TypedPointer<'P, 'T> here ...

1 个答案:

答案 0 :(得分:1)

我认为你不能在类中声明类型别名,类似于你不能声明嵌套类的方式。因此,您可以获得的最接近的是在模块/命名空间内声明一个私有类型别名,但您仍然需要保留类型参数:

module Pool

type private Ptr<'p,'t> = TypedPointer<'p,'t>

type ObjectPool<'p,'t>() =
    let pointers: Ptr<'p,'t> list = []