对于一个位类型,F#中的正确语法是什么,只有两个可能的值:0和1.我试过了;
type bit =
| 0
| 1
Run Code Online (Sandbox Code Playgroud)
并且错误消息是error FS0010: Unexpected integer literal in union case.我需要使用 [<Literal>]吗?
我收到了一条不同的错误消息: error FS0010: Unexpected integer literal in union case. Expected identifier, '(', '(*)' or other token.
如果您正在寻找类型安全的表示形式Bit,您可能更喜欢使用DUs来进行详尽的模式匹配:
type Bit = Zero | One
with member x.Value =
match x with
| Zero -> 0
| One -> 1
Run Code Online (Sandbox Code Playgroud)
如果您想要一个紧凑的表示,boolean键入是一个很好的候选人:
let [<Literal>] Zero = false
let [<Literal>] One = true
let check = function
| Zero -> "It's Zero"
| One -> "It's One"
Run Code Online (Sandbox Code Playgroud)
当有一个Bits 的集合时,你可以调查BitArray以获得更有效的治疗.他们的确boolean用作内部表征.