Elixir编程:流、理解式与字符串处理
1. 流的使用
在Elixir中,流(Streams)是一种强大的工具,它允许我们处理与代码异步的资源,并且具有副作用小的特点。例如:
iex> speaker |> Enum.take(3)
29
28
27
["29", "28", "27"]
等待一段时间后,让它运行到整分钟:
iex> speaker |> Enum.to_list
6
5
4
3
2
1
["6", "5", "4", "3","2", "1"]
虽然这段代码并不完美,因为它没有纠正代码引入的延迟对睡眠时间的影响,但它展示了流的一个很酷的特性。每次将流管道到 Enum 函数时,我们都会得到一组新的值,这些值是在当时计算的。
在实际应用中,并非所有迭代情况都需要使用流。当你想推迟处理直到需要数据,并且需要处理大量数据而不必一次性生成所有数据时,可以考虑使用流。
1.1 可收集协议
可枚举协议(Enumerable protocol)允许我们遍历类型中的元素,而可收集协议(Collectable protocol)则允许我们通过插入元素来构建集合。并非所有集合都是可收集的,例如范围(Ranges)就不能添加新元素。
可收集API比较底层,通常我们通过 Enum.into 和理解式来使用它。例如:
超级会员免费看
订阅专栏 解锁全文
12

被折叠的 条评论
为什么被折叠?



