Я все еще смущен тем, как читать сигнатуры функций.Как интерпретировать подпись функции
Option.map подпись следующее:
/// map f inp evaluates to match inp with None -> None | Some x -> Some (f x).
/// mapping: A function to apply to the option value.
/// option: The input option.
val map : mapping:('T -> 'U) -> option:'T option -> 'U option
Однако, я не имею ни малейшего понятия, что означает, что подпись.
Я прочитал ее в следующем виде:
Там есть функция, называемая карты, которая принимает функцию в качестве входных данных, которые мы будем называть «отображение» и дадут результат, который также функцию, которую мы назовем «опция».
Отображение параметров:
mapping:('T -> 'U)
Функция, которую мы переходим в качестве входных данных принимает титана (т.е. 'T) в качестве входных данных и урожайности урана (т.е.' U) в качестве выхода.
Опция вернулся
option:'T option -> 'U option
Мы будем называть вывод функции карты "вариант". Таким образом, это «опция», которая возвращается с выполнением map Функция также является функцией как указано выше. Требуется Титановый вариант и дает Уран вариант.
Пример:
type String20 = String20 of string
type Name = { First:String20
Last:String20
Suffix:String20 option }
let tryCreateName (first:string) (last:string) (suffix:string option) =
let isValid = [first; last]
|> List.forall (fun x -> x.Length > 2 && x.Length <= 20)
if isValid then
Some { First = String20(first);
Last = String20(last);
Suffix = Option.map String20 suffix }
else None
Как следующее выражение карта:
Option.map String20 suffix
На основании приведенного выше выражения, где находится "возвращается функция" опции Titanium - >Уран опция?
Мне было интересно, когда вы зададите этот вопрос. –
Возвращаемые значения не имеют имен, поэтому функция 'map' имеет два параметра -' mapping: ('T ->' U) 'и' option: 'T option'. – Lee
Хммм ... Я думал, что «->» означает выход. Следовательно, он находится между двумя параметрами. –