Я изучаю F# и создаю быстрый набор функций, которые сравнивают две покерные комбинации и определяют победителя.
Я создал этот размеченный союз для представления категорий покерных комбинаций:
type Category =
| HighCard
| OnePair
| TwoPair
| ThreeOfAKind
| Straight
| Flush
| FullHouse
| FourOfAKind
| StraightFlush
Я использую этот код для сравнения категорий, чтобы определить, лучше ли одна рука, чем другая:
if playerCategory > houseCategory then Win
elif playerCategory < houseCategory then Loss
// ... More code to handle cases within the same category
Так, например, выражение:
let playerCategory = FullHouse
let houseCategory = HighCard
if playerCategory > houseCategory then Win
elif playerCategory < houseCategory then Loss
// ... Other code
Будет иметь значение Win
.
Однако я не понимаю, как здесь могут работать операторы ‹ и >. (Первоначально у меня была функция, которая сопоставляла каждый случай с числовым значением, но я понял, что в этом нет необходимости.) Если я изменю порядок случаев, то логика сломается, поэтому я предполагаю, что каждому случаю присваивается какое-то значение по умолчанию. соответствует его порядку внутри типа?
Но я определенно был бы признателен за более глубокое понимание...