6.3.1 处理计划列表

6.3.1 处理计划列表

 

在前面的示例中,因为我们想要打印新的计划,因此,使用了命令式的 for 循环;如果想要创建包含新的计划列表,可以使用 List.map 函数,就像这样:

 

let newSchedules =

  List.map(fun s –>

     s |> mapSchedule (fun d -> d.AddDays(7.0))

    )schedules

 

List.map 函数的第一个参数是函数,通过使用原来的计划,获得一个新的计划值。在此示例中,我们计算出一个新的计划,并将它作为函数的结果返回。前面的代码可以通过使用管道和散函数应用来简化,就像这样:

 

let newSchedules =

  schedules|> List.map (mapSchedule (fun d -> d.AddDays(7.0)))

 

当我们为函数 mapSchedule 指定第一个参数(用于计算日期的函数),就得到类型为 Schedule –> Schedule 的函数,这正是 List.map 操作需要的第一个参数值,因此,不必显式写 lambda 函数。这个示例还演示了很多高阶函数把原始值作为最后一个参数值的原因,即,在处理列表值时,可以同时使用管道和散[函数]应用。

还有一种方法,是使用序列表达式(sequence expressions),同样简洁,但是,对于新手来说,可能更具可读性。我们会在第十二章讨论序列表达式,现在,要看看 C# 是如何实现相同功能的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值