文档结构  
翻译进度:已翻译     翻译赏金:0 元 (?)    ¥ 我要打赏

今天我们来学习 lists:max/1。

lists:max/1 接收一个入参,这个入参是一个最少有一个元素的列表,并且它返回这个列表里最大值的元素。这个列表可以由任何Erlang term组成:

lists:max([1, 39, 7, 63, 27, 52, 16]).
% 63
lists:max([q, w, a, r, c, f, m, b]).      
% w
lists:max([[1, 2, 3], [1, 2, 4]]).
% [1,2,4]

Erlang在不同类型的term之间有着截然不同的大小顺序,

number < atom < reference < fun < port < pid < tuple < list < bit string

传给lists:max/1函数的列表可以由任意类型的term组成。

第 1 段(可获 2 积分)
lists:max([1, 2, 3, 4, a]).         
% a
lists:max([1, a, [foo, bar], {baz}]).
% [foo,bar]

因为在Erlang中字符串实际上是数字列表,所以我们甚至可以比较字符串。

lists:max(["foo", "bar", "baz", "snafu"]).
"snafu" 

如果你传入一个空列表给lists:max/1函数,一个 “no function clause matching”的错误将产生,因为该函数需要一个至少有一个元素的列表作为入参。

lists:max([]).
** exception error: no function clause matching lists:max([]) (lists.erl, line 326)

请您告诉我在以后的Erlang Thursday系列文章里,哪些是您喜欢的Erlang函数,甚至只是你想看到的函数?

第 2 段(可获 2 积分)

如果您想比较Erlang的max函数和Ruby的max方法,别忘了看看上周的Ruby Tuesday系列文章: Ruby Tuesday on Enumerable#max

第 3 段(可获 2 积分)

文章评论

CY2
每日一篇啊? 赞 :thumbsup: