У меня есть 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 предупреждения? Я что-то пропустил в процессе сопоставления?