Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Generics F#:帮助创建看似动态的类型的成员约束_Generics_F#_Generic Constraints - Fatal编程技术网

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

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("")

我一直在寻找一种方法,在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("")
  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