一般的な列挙型の値をとり、その基礎となる整数値を2倍にするF#関数を記述したいと思います。幸い、int
という組み込み関数があります。この関数は、列挙型を整数に変換するので、これは簡単に行えますか?ここに私の最初の試みだ:Enum型のF#型制約
let doubler (value : 't when 't : enum<int>) =
2 * (int value)
悲しいことに、これは次のコンパイラメッセージで結果:
Program.fs(2,10):警告FS0064:この構築物は、コードがより 少なく、一般的なことになり型の注釈で示されます。タイプ変数 'はタイプ' int 'に制約されています。
Program.fs(2,10):エラーFS0071: 型の推論変数にデフォルトの型 'int'を適用すると、型の制約が一致しません。タイプ 'int' はCLI enumタイプではありません。 Program.fs(1,28) - (1,42)も参照してください。 さらに型の制約を加えることを検討してください。
私は間違っていますか? F#の包括的な列挙型の値から根底にある整数を抽出する良い方法はありますか?
'enum'は、値をその表現に変換します。コンパイラはあなたのために制約を入れます。下記参照。 – s952163