Erlang常用函数与操作整理

需积分: 2 1 下载量 152 浏览量 更新于2024-09-10 收藏 13KB TXT 举报
"Erlang日常使用技巧集合" 在Erlang编程中,有一些常用且实用的操作函数,这对于初学者和日常开发来说非常有价值。这里列举了一些关键的Erlang列表处理函数以及字符串和系统相关的BIF(内置函数)。 1. `lists:seq(Start, End[, Step])`: 这个函数用于生成一个从`Start`到`End`的整数序列,可选参数`Step`指定步进值。例如: - `lists:seq(0, 9)` 返回 `[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]` - `lists:seq(0, 9, 3)` 返回 `[0, 3, 6, 9]` 2. `lists:map(Function, List)`: 它将`List`中的每个元素应用`Function`函数并返回新列表。例如: - `lists:map(fun(X) -> X + 1 end, [1, 2, 3])` 返回 `[2, 3, 4]` 3. `lists:filter(Predicate, List)`: 这个函数根据`Predicate`函数的结果过滤`List`,返回满足条件的元素。例如: - `lists:filter(fun(X) -> X > 5 end, [1, 6, 3, 8, 2])` 返回 `[6, 8]` 4. `lists:member(Element, List)`: 检查`Element`是否在`List`中,如果在则返回`true`,否则返回`false`。例如: - `lists:member(2, [1, 2, 3])` 返回 `true` 5. `lists:max(List)` 和 `lists:min(List)`: 分别返回`List`中的最大值和最小值。例如: - `lists:max([3, 1, 5, 2, 7])` 返回 `7` - `lists:min([3, 1, 5, 2, 7])` 返回 `1` 6. `lists:sum(List)`: 计算`List`中所有元素的和。例如: - `lists:sum([1, 2, 3, 4, 5])` 返回 `15` 7. `lists:sort(List)`: 对`List`进行升序排序。例如: - `lists:sort([3, 1, 5, 2, 7])` 返回 `[1, 2, 3, 5, 7]` 8. `lists:sublist(List, Start, Length)`: 从`List`中获取从`Start`位置开始长度为`Length`的子列表。例如: - `lists:sublist([a, b, c, d, f], 3)` 返回 `[c, d, f]` - `lists:sublist([a, b, c, d, f], 3, 2)` 返回 `[c, d]` 9. `lists:concat(List)`: 将`List`中的所有元素连接成一个单一的字符串。例如: - `lists:concat(["Hello", " ", "World"])` 返回 `"Hello World"` 10. `lists:keyfind(Key, Pos, TupleList)`: 在`TupleList`中查找键`Key`位于`Pos`位置的元组,并返回整个匹配的元组。例如: - `lists:keyfind(2, 1, [{1, 'a'}, {2, 'b'}, {3, 'c'}])` 返回 `{2, 'b'}` 11. `lists:subtract(List1, List2)`: 从`List1`中移除`List2`中的元素,返回新的列表。例如: - `lists:subtract([1, 2, 3, 2, 1], [2, 1])` 返回 `[3]` 此外,还有一些Erlang的内置函数(BIF): 12. `string:tokens(String, Delimiters)`: 使用`Delimiters`分隔符将`String`拆分成一个子串列表。例如: - `string:tokens("a122b47ab44", "ab")` 返回 `["122", "47", "44"]` 13. `string:len(String)`: 计算字符串`String`的长度。例如: - `string:len("Hello")` 返回 `5` 14. `tuple_size(Tuple)`: 获取元组`Tuple`的大小(元素数量)。例如: - `tuple_size({1, 2, 3, 4, 5, 6})` 返回 `6` 15. `apply(Module, Function, Args)`: 在`Module`模块中调用`Function`函数,传入`Args`参数。例如: - `apply(server5, start, [])` 调用 `server5:start([])`,假设`server5`模块已经定义了`start/0`函数 16. `erlang:get_stacktrace()`: 获取当前进程的堆栈跟踪信息,用于调试。 17. `statistics(runtime)` 和 `statistics(wall_clock)`: 分别返回程序运行时间(不包括垃圾回收时间)和实际经过的墙钟时间。 这些Erlang函数和BIF提供了强大的工具来处理列表、字符串和其他数据结构,是Erlang日常开发中不可或缺的一部分。通过熟练掌握它们,你可以更高效地编写Erlang代码。