2

ビット型の F# での正しい構文は何ですか。可能な値は 0 と 1 の 2 つだけです。試してみました。

type bit = 
         | 0
         | 1

エラーメッセージは次のとおりですerror FS0010: Unexpected integer literal in union case。を使用する必要があります [<Literal>]か?

別のエラー メッセージが表示されました。error FS0010: Unexpected integer literal in union case. Expected identifier, '(', '(*)' or other token.

4

2 に答える 2

6

のタイプセーフな表現を探している場合はBit、完全なパターンマッチングのために列挙型よりもDUを使用することをお勧めします。

type Bit = Zero | One
with member x.Value =
     match x with
     | Zero -> 0
     | One -> 1

コンパクトな表現が必要な場合は、booleanタイプが適しています。

let [<Literal>] Zero = false
let [<Literal>] One = true

let check = function
    | Zero -> "It's Zero"
    | One -> "It's One"

のコレクションがある場合は、より効率的な処理のためにBitArrayBitを調べることができます。それらは実際に内部表現として使用されます。boolean

于 2012-11-03T07:21:06.907 に答える
4

列挙型を使用したい-

type bit = 
     | Zero= 0
     | One = 1

パターンマッチングは、識別された共用体ほど良くはありませんが。

または、DUを使用することもできます

type bit =
|Zero
|One
member x.Int() =
    match x with
    |Zero -> 0
    |One -> 1
于 2012-11-03T02:13:18.367 に答える