gpt4 book ai didi

generics - 如何访问在 F# 中声明为泛型参数的类型的静态成员

转载 作者:行者123 更新时间:2023-12-02 20:15:07 27 4
gpt4 key购买 nike

我想在 F# 中创建一个基类型,这将允许我通过预定义约束简化其他类型的创建,即。限制为非负整数等。我创建了以下基本类型,它打算使用作为泛型参数提供的验证器类型的静态成员,希望我能够引用其静态“条件”成员 - 不幸的是,我似乎无法在任何地方引用泛型 ^tf类型主体,更不用说它的静态成员了。

  type Constrained<^tf when ^tf:(static member Condition: 'tv->bool)> (value : int) =
static member Create (v) =
match ^tf.Condition v with
| true -> Some ( Constrained(v) )
| _ -> None

我是 F# 新手,所以我不确定我想要做的事情是否可以在 F# 中真正实现...

最佳答案

再次阅读您的问题后,我认为您想要编写如下代码:

type T = T with
static member Condition (x) = x > 0

type Constrained< ^tf when ^tf:(static member Condition: int->bool)> (value : int) =
static member inline Create (v) =
match (^tf : (static member Condition : int->bool) v) with
| true -> Some ( Constrained(v) )
| _ -> None


let x:Constrained<T> option = Constrained<T>.Create(1)

但不确定这会给你带来什么。

关于generics - 如何访问在 F# 中声明为泛型参数的类型的静态成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46585604/

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