1

除了我的最后一个问题

let safeInput:Map<'a,'b> option -> 'a -> 'b -> Map<'a,'b> option = fun x y z ->
    match x with
    | Some d -> Some(d.Add(y,z))
    | None -> Some([y,z]|>Map.ofList)

我了解简单的高阶函数是如何被声明为一种类型的……如果不止一次使用“->”来破译它返回的内容,则从右到左阅读……即高阶函数。

对于书中的上述示例......我知道这是添加到地图中,我只是对如何破译顶线有点模糊?以及“有趣”关键字的使用?

4

1 回答 1

4

所以第一行声明 thatsafeInput是一个函数,它接受 a aMap option然后返回 a 。关键字只是创建函数的一种方式。keyvaluemap optionfun

等效函数是

let safeInput (x:Map<'a,'b> option) (y:'a) (z:'b) :Map<'a,'b> option =
        match x with
            | Some d -> Some(d.Add(y,z))
            | None -> Some([y,z]|>Map.ofList)
于 2013-10-10T08:13:34.863 回答