1

実数の文字列表現を実数型に変換したい。できることはわかっていますReal.fromString("5.5")が、実数型は返されませんが、他の実数で乗算または加算できない実数オプション型が返されます。

4

2 に答える 2

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
于 2012-02-10T15:59:36.990 に答える
3

Michael J. Barber の回答に追加すると、オプション タイプは代数データ型であり、SOME か NONE のいずれかです。

通常、ML では代数的データ型をパターン マッチングで分解します。

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

Michael J. Barber が提案したように使用できます(トップレベル環境にあるためgetOpt、実際には必要ありません)。これは上記の簡略化されたバージョンです。Option.getOpt

または、SOME になることが確実な場合は、次を使用できますvalOf(NONE の場合はエラーになります)。

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

または、 a でパターン マッチすることもできますval(valブランチが 1 つしかない場合でもパターン マッチでもあるため):

- val SOME x = Real.fromString "5.5";
> val x = 5.5 : real
于 2012-02-10T23:47:04.653 に答える