我有一個C#模塊,它接收和處理Operation類的各種實例。該接口聲明一種方法:c#類上的f#模式匹配
Operation Transform(Operation o1, Operation o2);
但有幾種操作。例如,對於簡單的文本編輯,存在InsertOperation和DeleteOperation,因此Transform方法的主體首先分析它接受的操作類型並進行轉換。學習一些F#後,我想重寫它的這部分項目(如實踐和實驗),我想我可以用一個模式匹配這樣更好處理這個問題:
let Transform (oa: Operation) (ob: Operation) =
match oa, ob with
| InsertOperation o1, InsertOperation o2 -> //transformation
| DeleteOperation o1, InsertOperation o2 -> //transformation
| InsertOperation o1, DeleteOperation o2 -> //transformation
| DeleteOperation o1, DeleteOperation o2 -> //transformation
不過,我得到以下錯誤此消息爲:
The pattern discriminator 'InsertOperation' is not defined
Operation類及其後代用C#編寫,但我認爲這應該不會造成問題。有人可以解釋爲什麼這是一個問題,我怎麼能解決這個問題?
哇,這真的很整齊 – Peter