Член Enum (флаги), состоящий из других членов [<Flags>] type LikeMatch = | None = 0 | Start = 1 | End = 2 | All = Start ||| End //ERROR: Unexpected identifier in union case Я также пробовал квалифицировать членов с типом перечисления. Есть ли способ сделать это в F #? Ответ 1 В соответствии с языковой ссылкой F # это невозможно. Правая часть знака = в перечислении F # должна быть целым литералом http://msdn.microsoft.com/en-us/library/dd233216(v=VS.100).aspx Грамматика type enum-name = | value1 = integer-literal1 | value2 = integer-literal2 Ответ 2 Как говорит JaredPar, это не допускается языком, но F # имеет бинарные литералы, что позволяет легко показать, какие биты устанавливаются: open System [<Flags>] type LikeMatch = | None = 0b000000000 | Start = 0b000000001 | End = 0b000000010 | All = 0b000000011
Ответ 1 В соответствии с языковой ссылкой F # это невозможно. Правая часть знака = в перечислении F # должна быть целым литералом http://msdn.microsoft.com/en-us/library/dd233216(v=VS.100).aspx Грамматика type enum-name = | value1 = integer-literal1 | value2 = integer-literal2
Ответ 2 Как говорит JaredPar, это не допускается языком, но F # имеет бинарные литералы, что позволяет легко показать, какие биты устанавливаются: open System [<Flags>] type LikeMatch = | None = 0b000000000 | Start = 0b000000001 | End = 0b000000010 | All = 0b000000011