我有2套可識別聯合:F#:嵌套歧視工會和匹配
type ServiceTypes =
| Contexts
| Context of int
| Producers
type ServiceActions =
| Get of ServiceTypes
| Update of ServiceTypes
和嵌套的match語句:
let s_action = match action with
| Get(stype) -> sprintf "Get%s" (match stype with
| Contexts -> sprintf "Contexts"
| Context(id) -> (sprintf "Context/%d" id))
| _ -> raise (RequestException("get"))
| Update(stype) -> sprintf "Update%s" (match stype with
| Producers -> (sprintf "Producers")
| _ -> raise (RequestException("update")))
的目標是建立與呼叫看起來像一個請求字符串那req.Send(Update Producers)
。
反正我不明白一個道理,編譯器給了我2個警告:
-
在
- 我得到此規則將永遠不會在第一
match stype
我匹配 - 得到一個這個表達式的不完整模式匹配。例如,值'生產者'可能表示模式未涵蓋的情況。
Update(stype)
所以問題是爲什麼我會得到這兩個警告?我在配對作品的路上錯過了什麼?
Arf ...我以爲我不明白模式匹配:P至少這只是一個愚蠢的語法錯誤。關於如何擺脫我非常喜歡的額外括號的大演示(我更新了我的代碼)。非常感謝您的寶貴時間! – 2012-02-03 23:06:49