1
鑑於以下有效模式:F#部分作用模式匹配「規則永遠不會被匹配」
let (| HasMatch |) (x:string) =
if x.Contains("0") then Some()
else None;;
而下面的模式匹配FUNC:
let testFn x = function
| HasMatch i -> printfn "%A" i
| _ -> printf "nope";;
最後一行的通配符模式表示warning FS0026: This rule will never be matched
我看到的所有示例似乎都推斷部分活動模式必須返回Some('a)
才能匹配,而那些返回的示例3210被通配符捕獲。錯誤似乎有所不同。
我在想什麼?
你的描述部分作用的模式,但你試圖用一個單一的情況下,一個定義它。這裏有一些相當不錯的教程:http://hestia.typepad.com/flatlander/2010/07/f-pattern-matching-for-beginners-part-6-active-patterns.html底部的摘要描述了文章中詳細介紹的不同類型。 – 7sharp9