Enum(flags)成员由其他成员组成

时间:2010-05-19 15:12:10

标签: f#

[<Flags>]
type LikeMatch =
    | None  = 0
    | Start = 1
    | End   = 2
    | All   = Start ||| End //ERROR: Unexpected identifier in union case

我也尝试使用枚举类型对成员进行限定。有没有办法在F#中做到这一点?

2 个答案:

答案 0 :(得分:26)

正如JaredPar所说,语言不允许这样做,但F#确实有二进制文字,这样可以很容易地显示正在设置的位:

open System

[<Flags>]
type LikeMatch =
    | None  = 0b000000000
    | Start = 0b000000001
    | End   = 0b000000010
    | All   = 0b000000011

答案 1 :(得分:10)

根据F#语言参考,没有办法做到这一点。 f#enum中=符号的右侧必须是整数文字

语法

type enum-name =
   | value1 = integer-literal1
   | value2 = integer-literal2