12.1 生成序列

728 篇文章 1 订阅
349 篇文章 0 订阅

12.1 生成序列

 

生成序列有几种方法,先来看一下我们的选择,直接的方法是实现IEnumerator <T> 接口,提供 Current 属性,和 MoveNext方法,将枚举数对象移动到下一个元素。这要求显式创建有可变状态的对象,很明显违反了函数式风格。通常的做法是隐藏可变性,提供更具声明式的方法,表达生成序列的内容,这类似于在前一章使用的延迟值。显式使用可变状态(例如,实现缓存),看起来不是很好的函数式风格,但我们把可变性隐藏到Lazy<'T> 类型中,就获得了完全合理的函数式代码。

通常,在函数式编程中,我们可以使用高阶函数。F# 库提供了不少的函数处理序列,但我们只看一个例子。后面我们会看到,C# 和F# 都有简单的方法来生成序列,在C# 中,我们可以使用迭代,F# 提供了通用目的的序列处理功能,称为序列表达式(sequence expressions)。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值