我想将实数的字符串表示形式转换为实数类型。我知道我可以做到,Real.fromString("5.5")
但它不返回实数类型,而是我不能与任何其他实数相乘或相加的实数期权类型。
问问题
3761 次
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 的回答中,选项类型是代数数据类型,它可以是一些东西,也可以是 NONE。
通常,在 ML 中,我们通常使用模式匹配来解构代数数据类型:
case Real.fromString "5.5" of SOME x => x + 1.0
| NONE => 42.0;
您可以getOpt
像 Michael J. Barber 建议的那样使用(您实际上并不需要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
也是模式匹配,尽管只有一个分支):
- val SOME x = Real.fromString "5.5";
> val x = 5.5 : real
于 2012-02-10T23:47:04.653 回答