对于内联函数,可以创建一个约束:
let inline implicit arg =
( ^a : (static member op_Implicit : ^b -> ^a) arg)
要求给定的运算符或成员参数。有没有办法根据相似的东西进行匹配?
我想创建一个活动模式,其中传递给方法的任何参数与内联函数的约束匹配,如上所述触发该函数,其他所有内容都作为一些错误管理的一部分结束。
答案 0 :(得分:29)
看起来您也可以编写内联活动模式。我以前没用过这个,但我现在试了一下,看起来工作得很好。下面的Test
模式可以与实现返回Test
的{{1}}方法的任何对象一起使用:
option< ^R >
现在,您可以定义一些定义let inline (|Test|_|) (a:^T) : option< ^R > =
(^T : (member Test : unit -> option< ^R >) a)
方法的对象,并使用模式匹配它们:
Test
这看起来非常有趣,因为模式匹配现在是对象的一部分。
答案 1 :(得分:0)
我认为你必须使用反射,例如有一个函数需要o:obj
,然后反映o.GetType()
个成员。