Elixir提供了非常棒的与Erlang的库交互的能力。实际上,Elixir不鼓励简单地封装Erlang的库,而是提倡直接与Erlang代码交互。本文我们将介绍一些最常见和有用的而在Elixir里找不到的Erlang功能。
当你逐渐熟悉了Elixir,你可能想要探索Erlang的STDLIB指引手册来获得更多细节。
binary模块
Elixir内建的String模块处理用UTF-8编码的二进制数据。当你要处理不一定要用UTF-8编码的二进制数据的时候,binary模块就有用。
|
|
上面的例子展示了区别;String模块返回Unicode代码点,而 :binary 处理原始数据的字节。
格式化文本输出
Elixir没有包含与C语言和其他语言里的printf函数相似的函数。幸运地是,Erlang标准库函数 :io.format/2 和 :io_lib.format/2 可以被用作这样的功能。第一个函数格式化数据输出到终端,而第二个函数格式化数据为一个iolist。格式化说明符不同于printf,细节请参阅Erlang官方文档。
|
|
另外要注意Erlang的格式化函数需要特别注意Unicode的处理。
crypto模块
crypto模块包含哈希函数、数字签名、加解密等等函数。
|
|
:crypto模块不是Erlang标准库的一部分,但是它包含在Erlang发行版里。这意味着,任何时候你要使用 :crypto 的时候,就要把它加入你的项目应用列表里。要这么做的话,编辑你的 mix.exs 文件包含它:
|
|
digraph模块
digraph模块(还有digraph工具)包含了处理用点和边构建的有向图的函数。在构建了图后,模块里的算法将帮助找到图里的两个节点间的最短路径或回环路径。
给定三个节点,找到从第一个到最后一个节点的最短路径。
|
|
注意::digraph里的函数在内部修改了图的结构,这是可能的,因为它们被实现为ETS表。下面我们来看看ETS。
ETS
ets 和 dets 模块分别处理内存或硬盘的大数据结构存储。
ETS让你创建一个包含元组的表。默认情况下,ETS表是被保护的,就是说只有拥有者进程可以写这个表,而其他任何进程可以读这个表。ETS有一些功能被用来当做简单数据库、KV存储或者缓存机制。
ets模块的函数将修改表的状态作为副作用。
|
|
math模块
math模块包含常用的数学运算,覆盖三角函数、指数函数、对数函数。
|
|
queue模块
queue是一个数据结构,它高效地实现了(双端)FIFO(先进先出)队列。
|
|
rand模块
rand有返回随机数和设置随机种子的函数。
|
|
zip和zlib模块
zip模块让你从硬盘或内存读写ZIP文件,也提取文件的信息。
下面的代码统计ZIP文件里的文件个数:
|
|
zlib模块用zlib格式,就如gzip命令里找到的格式,来处理压缩数据:
|
|
原文链接: http://elixir-lang.org/getting-started/erlang-libraries.html