2011-03-11 7 views

答えて

2

私は1.0<m>によって生のfloat値を掛けることであろうKVBのアプローチ以外に

let convert (s:string) : float<m> = 
    float s 
    |> LanguagePrimitives.FloatWithMeasure 
+1

私はまあ、ちょっと原始的です。 – Daniel

2

別のオプションのようなものを使用したい:

let convert (s:string) = 
    (float s) * 1.0<m> 
2

を別の選択肢を追加するには、私はおそらく記述します:

let inline convertToMeters x : float<m> = unbox (box (float x));; 

この関数を使用して、b eはfloatにタイプfloat<m>に変換されています(これは整数などでも動作するのでいいですが、System.Randomなどのすべてのランダムタイプではないため)。タイプシグネチャからこれを見ることができます:

+2

一般化したい場合は、さらに遠くに移動し、結果の型を 'float 'の代わりに 'float <'t>'にすることができます。 – kvb

関連する問題