2012-02-10 5 views
1

実数の文字列表現を実数型に変換したい。 私はReal.fromString("5.5")を行うことができることを知っていますが、実際のタイプを返すことはできません。文字列をSMLで実数に変換

答えて

4

パターンマッチングまたはOption構造体のいずれかの関数を使用して、オプションから値を抽出します。たとえば:

- val x = Real.fromString("5.5"); 
> val x = SOME 5.5 : real option 
- Option.getOpt(x, 0.0); 
> val it = 5.5 : real 
3

マイケル・J・バーバーの答えに追加するには、オプションタイプは、いくつかの何か、またはNONEのいずれかである代数的データ型です。

通常、MLに我々は通常のパターンマッチングと代数的データ型を分解:

case Real.fromString "5.5" of SOME x => x + 1.0 
          | NONE => 42.0; 

あなたはマイケル・J・バーバーが提案ようgetOptを使用することができます(あなたが実際にgetOpt以来Option.がトップである必要はありません。これは単純化されたバージョンです。

それとも、あなたはいくつかの、あなたは(それがNONEである場合は、エラーになる)valOfを使用することができますになるだろうと確信している場合:

- val x = Real.fromString "5.5"; 
val x = SOME 5.5 : real option 
- valOf x; 
val it = 5.5 : real 

またはあなたはそれを離れて、パターン一致する可能性がvalvalも1つのブランチであるにもかかわらずパターンマッチであるため):

- val SOME x = Real.fromString "5.5"; 
> val x = 5.5 : real 
関連する問題