F#でメジャータイプを作成するにはどのようにすればよいでしょうか?静的メンバーNewに値を与え、与えられたメジャータイプをboolに生成することができますか?boolを生成するにはどのようにメンバ型を静的メンバで作成するか?
これは、int、int64、およびdecimalに対応していますが、これは完全に機能します。
[<Measure>] type MyInt = static member New value = value * 1<MyInt>
[<Measure>] type MyInt64 = static member New value = value * 1L<MyInt64>
[<Measure>] type MyDecimal = static member New value = value * 1m<MyDecimal>
しかし、これは動作しません:
[<Measure>] type MyBool = static member New value = value * true<MyBool>
コンパイルエラーが、私はまた、文字列、および日時と、この全体を実行しているUnexpected token '>' or incomplete expression
です。私の目標は基本的にMeasure型を使用して、単一のケースのユニオン型ラッパーの実行時パフォーマンス・ヒットなしにコンパイル時間のチェックを提供することです。 (See this answer by Jack P. for reference.)
理想的には、私はすべてのタイプにこの概念を使用したいと思いますが、数字ではないタイプの仕組みは見ていません。
'LanguagePrimitives.GenericOne'はすべての' new'関数と同じですか? - 少なくとも数字は、ブールをテストしていない –
私はそれを使用するとは思わなかった。私は確認する必要があります。 –
'1'を 'GenericOne'に置き換えようとしましたが、' int 'を返さないだけで' int'を返します。私は '1 'を 'GenericOne 'に置き換えようとしましたが、コンパイラエラー '予想される型、単位ではありません。' –