我想将实数的字符串表示转换为实数。
我知道我可以做Real.fromString("5.5")
但是它不会返回实际类型,而是实际选项类型,我无法将其与任何其他实数相加或添加。
答案 0 :(得分: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
答案 1 :(得分: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
位于顶级环境中),这是一个简化版本以上。
或者,如果你确定它会是某个,你可以使用valOf
(如果它是NONE则会出错):
- val x = Real.fromString "5.5";
val x = SOME 5.5 : real option
- valOf x;
val it = 5.5 : real
或者您可以在val
中对其进行模式匹配(因为val
也是模式匹配,尽管只有一个分支):
- val SOME x = Real.fromString "5.5";
> val x = 5.5 : real