Чтобы добавить к ответу Майкла Дж. Барбера, тип параметра - это алгебраический тип данных, который либо НЕСКОЛЬКО, либо НЕТ.
Обычно в ML мы обычно деконструируем алгебраические типы данных с сопоставлением с образцом:
case Real.fromString "5.5" of SOME x => x + 1.0
| NONE => 42.0;
Вы можете использовать getOpt
, как предложил Майкл Дж. Барбер (вам на самом деле не нужен Option.
, поскольку getOpt
находится в среде верхнего уровня), что является упрощенной версией выше.
Или, если вы уверены, что это будет НЕКОТОРЫЕ, вы можете использовать valOf
(что приведет к ошибке, если НЕТ):
- 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