Мой вопрос прост: как я могу перевести этот код на Си:Выражение соответствия OCAML
if (x == y + 1)
// some code
else if (x == y - 1)
// some code
else if (x == y + 2)
....
В основном я думал об использовании сопоставления с образцом, который, казалось бы уместно. К сожалению, картина, как это не работает:
match x with
| y + 1 -> some code
| y - 1 -> some code
| y + 2 -> some code
| _ -> some code
Компилятор не кажется, чтобы быть счастливым и от того, что я обнаружил, выражения на согласование pattenr как я не допускается. Поэтому я попытался положить их в значениях таким образом:
let v1 = y + 1 in
let v2 = y - 1 in
let v3 = y + 2 in
match x with
| v1 -> some code
| v2 -> some code
| v3 -> some code
| _ -> some code
Unfortunatly Я получаю предупреждения о том, что мои значения v1 v2 и v3 не используются и что случаи совпадения, которые используют их не используются слишком.
Как правильно сопоставить выражение с другими выражениями?
Благодаря
Я понимаю, что вы пытаетесь сказать, но быть педантичным, сопоставление с образцом _is_ замену 'if', в том смысле, что если' 'просто удобный синтаксический сахар для двухстороннего совпадения над булевым. –