в smlnj, как вы преобразуете "строковый параметр" в "строку"? - PullRequest
3 голосов
/ 07 июня 2011

Пожалуйста, помогите, я понятия не имею, как работает строковый параметр.

возможно ли преобразовать строковый параметр в строку?

Ответы [ 3 ]

8 голосов
/ 08 июня 2011

Как уже указывалось, вы можете использовать сопоставление с образцом, чтобы получить желаемый результат. Итак, как-то так:

fun foo(NONE) = ""
  | foo(SOME a) = a;

Но вы можете избавить себя от проблем и использовать Option.valOf функцию из библиотеки SML вместо этого, просто выполнив:

Option.valOf(SOME "my string"); (или просто valOf(SOME "my string");, как указал newacct в комментариях.)

3 голосов
/ 07 июня 2011

Тип "option" в ML похож на Nullable в мире .NET.Это дискриминационное объединение с двумя значениями None и Some of 'a (для общего типа 'a option).Чтобы преобразовать в строку, вам нужно получить значение 'a, что вы можете сделать с помощью обычных конструкций сопоставления с образцом.

Конечно, если у вас есть значение None, будетнет строки для извлечения.Итак, вам нужно обработать случай, когда появляется None, так же, как вы можете обрабатывать нуль на других языках.

0 голосов
/ 14 июля 2011

для примера:

val x = SOME "String";

(* Вы можете просто получить его, сделав так: *)

val stringfromoptionstring = caseх НЕКОТОРЫХ s => s |NONE => "Строка не найдена";

...