У меня есть 2 вложенных различающихся объединения:
type ServiceTypes =
| Contexts
| Context of int
| Producers
type ServiceActions =
| Get of ServiceTypes
| Update of ServiceTypes
И вложенное выражение соответствия:
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 предупреждения:
- на
Update(stype)
Я получаю Это правило никогда не будетСовпадение - на первом
match stype
Я получаю Неполные совпадения с образцом для этого выражения.Например, значение «Производители» может указывать на случай, не охватываемый шаблоном (ами).
Итак, вопрос в том, почему я получаю эти 2 предупреждения?Я что-то упустил из-за соответствия?