"Type extensions"と呼ばれるF#機能に関するもう1つの質問です。F#で列挙型を拡張する
F#で列挙を拡張することは不可能です。私は列挙型を拡張するためのC# Extensions Methods多くを使用します。
極限1:範囲の検証ロジックを追加し、文字列表現を返すメソッドなど
残念ながら、それだけで労働組合を判別しますが、単純な列挙を拡張するが不可能に拡張可能と思われます延長
// CustomEnum.fs
module CustomEnumModule
type CustomEnum =
| Value1 = 1
| Value2 = 2
// Trying to split definition of the enum
type CustomEnum with
| Value3 = 3
エラー:「エラーFS0010:予期しない記号 '|'メンバーの定義における」
2.オプションの拡張
// CustomEnumEx.fs
open CustomEnumModule
type CustomEnum with
member public x.PrintValue() =
printfn "%A" x
エラー: "エラーFS0896:(1)私達ができるので、列挙型は、メンバー"
を持つことはできませんそれは私のために奇妙なようですフル機能の差別化されたユニオンの特別なケースとして単純な列挙を扱います。はを区別したユニオンを拡張し、(2).NETの列挙型を拡張するのは、 ding FP機能)を既存のインフラストラクチャに統合します。
この動作は意図的なものですか、これは実装上の単純なバグですか?
P.S.残念ながら、F# Specはこの点に関しては静かであり、少なくとも私はそこでの1つまたは別の動作の証明を見つけることができません。
:[拡張方法Enumは許可されていませんか?](http://cs.hubfs.net/topic/None/59784)これは可能でないことを示唆しており、設計上のものです –
リンクありがとうございます。そして私はこれが**設計上の可能性があることに同意します**。私はこの決定の根底にある根拠を理解できません。 –