确实如此,但您必须注释如下:
type Thing<'a when 'a:comparison> =
| Pair of ('a*'a)
with
member m.InOrder() =
match m with
| Pair (a,b) when a<=b -> true
| _ -> false
member m.Equal() =
match m with
| Pair (a,b) when a=b -> true
| _ -> false
Pair(1,2).InOrder() //true
Pair(3,2).InOrder() //false
Pair(42,42).Equal() //true
Run Code Online (Sandbox Code Playgroud)
尝试更换Thing<'a when 'a:comparison>
的Thing<'a when 'a:equality>
观看InOrder()
方法失败,而Equal()
仍然有效.替换Thing<'a when 'a:comparison>
为Thing<'a>
,两种方法都不起作用.