我仍然对如何读取函数签名感到困惑。如何解释函数签名
的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
我们将调用地图功能“选项”的输出。因此,从执行地图函数返回的这个“选项”也是如上所述的函数。这需要钛选项并产生铀选项。
实施例:
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
- >铀选项?
我在想你什么时候会问这个问题。 –
返回值没有名称,所以'map'函数有两个参数 - 'mapping:('T - >'U)'和'option:'T option'。 – Lee
嗯......我以为“ - >”是指产量。因此,它在两个参数之间。 –