首页 > Erlang并发教程 > 4.10 Erlang并发编程-计数
2013
11-06

4.10 Erlang并发编程-计数

计数
我们常常要使用到计数器,以便对一个列表的第n个元素做些动作:

count(Terminal, L) ->
    ... do something ...;
count(N, [_|L]) ->
    count(N-1, L).

则返回列表中第n个元素(假设其存在)的函数可以写成:

nth(1, [H|T]) ->
    H;
nth(N, [_|T]) ->
    nth(N - 1, T).

这种递减至一个终止条件的计数方式往往要由于递增计数。为了说明这一点,考虑同样是返回第n个元素但是采用递增计数的函数nth1:

nth1(N, L) ->
    nth1(1, N, L).
nth1(Max, Max, [H|_]) ->
    H;
nth1(N, Max, [_|T]) ->
    nth1(N+1, Max, T).

这种做法需要一个额外的参数和一个辅助函数。


留下一个回复

你的email不会被公开。