gpt4 book ai didi

generics - F#:帮助创建看似动态类型的成员约束

转载 作者:行者123 更新时间:2023-12-03 06:31:39 27 4
gpt4 key购买 nike

我一直在研究一种向 F# 方法添加一些鸭子类型的方法。

SomeMethod(model:'a) =
let someField = model.Test("")

传入的参数带有 Test 方法。我见过这样的符号:

member inline public x.Testing< ^a when ^a : (member public Test : String-> String)>(model:^a) =   
let something = model.Test("")
ignore

在我看来,通用约束可以用于方法级别而不是类/接口(interface)级别。问题是由于类型问题我无法编译它。这让我相信没有办法在方法级别指定约束。这样正确吗?

最佳答案

这个语法有点笨拙,但就是这样。

type Foo() =
member inline public x.Testing(model) =
let something = (^a : (member Test : string -> string) (model, ""))
ignore

使用界面可能会更好:

type IModel
abstract Test : string -> string

关于generics - F#:帮助创建看似动态类型的成员约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8095512/

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