[英]F#: Member constraints to help create seemingly dynamic types
我一直在寻找一种方法来为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
对我来说,通用约束可以用于方法级别而不是类/接口级别。 问题是由于类型问题我无法编译它。 这让我相信没有办法在方法级别指定约束。 这是coorect?
这个语法有点笨拙,但现在就是这样。
type Foo() =
member inline public x.Testing(model) =
let something = (^a : (member Test : string -> string) (model, ""))
ignore
你可能最好使用一个界面:
type IModel
abstract Test : string -> string
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.