作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在 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/
我是一名优秀的程序员,十分优秀!