codecamp

Elixir 枚举接口

Elixir提供了可枚举性的概念,以及​Enum​模块来操作它们。我们已经学习了两个可枚举结构:列表和映射。

iex> Enum.map([1, 2, 3], fn x -> x * 2 end)
[2, 4, 6]
iex> Enum.map(%{1 => 2, 3 => 4}, fn {k, v} -> k * v end)
[2, 12]

Enum​模块提供了巨量的函数用于对可枚举体中的元素进行变换,排序,组合,筛选和检索。这是Elixir开发者最常用的模块之一。

Elixir也提供范围:

iex> Enum.map(1..3, fn x -> x * 2 end)
[2, 4, 6]
iex> Enum.reduce(1..3, 0, &+/2)
6

Enum模块中的函数只适用于对数据结构中的值进行枚举。对于特定操作,例如插入和更新特定的元素,你可能需要使用针对于某种数据类型的模块。例如,如果你想要往列表的指定位置插入指定元素,你应当使用List模块中的List.insert_at/3函数,因为将值插入到一个范围中是没有意义的。

我们说Enum模块中的函数是多态的,因为它们适用于多种数据类型。特别地,Enum模块中的函数适用于任何实现了Enumerable协议的数据类型。我们将在之后的章节讨论协议;现在我们将讲到一种特殊的枚举体,流。


Elixir 归约和映射算法
Elixir 积极与懒惰
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Elixir 基本操作符

Elixir 二进制,字符串和字符列表

Elixir 类型规格与行为

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }