今天的Erlang Thursday讲的是函数 lists:map/2 。
lists:map/2 接收两个入参,一个是接收一个入参的函数,我们称它为“mapping”函数,另一个是一个Erlang term组成的列表。lists:map/2 的结果是一个列表,这个列表是由入参的列表的每个元素应用于“mapping”函数得到结果组成的。
|
|
因为字符串在Erlang里就是整数列表,所以你也可以将map函数应用在字符串上。
|
|
Erlang里的函数
如果你仔细观察上面第一个例子,你会发现第一个入参我们传递的是一个 fun(X) -> X + 1 end. 这是Erlang的匿名函数的语法。 一个匿名函数的格式如下:
|
|
因为我们可以像普通函数一样使用匿名函数,除了在17.0以前的版本不能递归调用一个匿名函数外,所以我们可以将一个有多个子句的匿名函数传给lists:map/2 函数。
|
|
传递命名函数给lists:map/2
虽然一些场合我们用匿名函数,但是更多时候为了清晰明了,我们还是想用命名函数。我们可以通过函数的限定名称方式来传递一个命名函数给lists:map/2,采用的格式是,在module:function_name/arity 前面加上 fun 。下面的例子用math:log10/1和erlang:is_atom/1两个函数来演示:
|
|
原文链接: https://www.proctor-it.com/erlang-thursday-lists-map-2/