などint
や「ジェネリック構築物がタイプすることを必要とする』取得string
などの参照型では使用できません。
識別された共用体は、実際にクラスにコンパイルされるため、デフォルトで参照型です。しかし、それらは値型にする構造体でなければなりません。しかし、あなたがそうすると、別のエラー:If a union type has more than one case and is a struct, then all fields within the union type must be given unique names
が発生します。あなたは、この例のように、各ケース内の値に名前を付けることができます。
[<Struct>]
type foo =
| Yes of yes:bool
| Number of number:decimal
今、あなたはNullable<foo>
を持つことができます。しかし、おそらく実際にこれをやりたいとは思わないでしょう。参照型と値型の両方に対して "nullable"値を表すためのF#の通常の方法は、Option
型を使用することです。代わりにfoo
構造体を作るので、あなたはおそらく代わりにOption<foo>
にタイプを変更する必要があります。
type test(value) =
member this.Value : Option<foo> = value
test(Some (Number 1M)) // some value
test(None) // no value
F#が大きくそれが不可能F#で定義された型がnullにできるようになり、あなたが代わりにすべてのためにOption
を使用します参照型と値型を区別します。 Nullable
は、それを使用する既存の.NETコードで作業する場合にのみ便利です。
nullableで、オプションではないのはなぜですか? nullableはここの要件ですか? – DaveShaw