Generics F#:帮助创建看似动态的类型的成员约束
我一直在寻找一种方法,在F#方法中添加一些duck类型Generics F#:帮助创建看似动态的类型的成员约束,generics,f#,generic-constraints,Generics,F#,Generic Constraints,我一直在寻找一种方法,在F#方法中添加一些duck类型 SomeMethod(model:'a) = let someField = model.Test("") 输入的参数上有测试方法。我见过这样的符号: member inline public x.Testing< ^a when ^a : (member public Test : String-> String)>(model:^a) = let something = model.Test("")
SomeMethod(model:'a) =
let someField = model.Test("")
输入的参数上有测试方法。我见过这样的符号:
member inline public x.Testing< ^a when ^a : (member public Test : String-> String)>(model:^a) =
let something = model.Test("")
ignore
member inline public x.Testing<^a当^a:(member public Test:String->String)>(model:^a)=
让某物=model.Test(“”)
忽视
在我看来,泛型约束可以用于在方法级别而不是类/接口级别实施。问题是由于类型问题,我无法将其编译。这使我相信没有一种方法可以在方法级别指定约束。这是正确的吗?这句话的语法有点笨拙,但这里是
type Foo() =
member inline public x.Testing(model) =
let something = (^a : (member Test : string -> string) (model, ""))
ignore
您最好使用一个界面:
type IModel
abstract Test : string -> string