Да, действительно есть!Паттерны могут быть вложенными , это их основная точка.Вы можете найти совпадения на Y
, и внутри этого совпадения на полях B
, а внутри этого совпадения на C
.
Примерно так:
match a with
| X _ -> ()
| Y { C = Z z } -> printfn "%i" z
| Y { C = W _ } -> ()
И так как вы возвращаете единицу в обоих не Y.C.Z
случаях, вы можете объединить их в универсальном шаблоне:
match a with
| Y { C = Z z } -> printfn "%i" z
| _ -> ()