Elixir学习笔记——Erlang 库

Elixir 提供了与 Erlang 库的出色互操作性。事实上,Elixir 不鼓励简单地包装 Erlang 库,而是直接与 Erlang 代码交互。在本节中,我们将介绍一些 Elixir 中没有的最常见和最有用的 Erlang 功能。

Erlang 模块的命名约定与 Elixir 不同,并且以小写字母开头。在这两种情况下,模块名称都是原子,我们通过分派到模块名称来调用函数:

随着您对 Elixir 的熟练程度不断提高,您可能希望更详细地探索 Erlang STDLIB 参考手册。

二进制模块

内置 Elixir String 模块处理 UTF-8 编码的二进制文件。当您处理不一定是 UTF-8 编码的二进制数据时,:binary 模块很有用。

以上示例显示了差异;String 模块返回 Unicode 码位,而 :binary 处理原始数据字节。

格式化文本输出

Elixir 不包含类似于 C 和其他语言中的 printf 的函数。幸运的是,可以使用 Erlang 标准库函数 :io.format/2 和 :io_lib.format/2。第一个格式化为终端输出,而第二个格式化为 iolist。格式说明符与 printf 不同,有关详细信息,请参阅 Erlang 文档。

加密模块

:crypto 模块包含哈希函数、数字签名、加密等:

:crypto 模块是 Erlang 附带的 :crypto 应用程序的一部分。这意味着您必须将 :crypto 应用程序列为项目配置中的附加应用程序。为此,请编辑 mix.exs 文件以包含:

任何不属于 :kernel 或 :stdlib Erlang 应用程序的模块都必须在 mix.exs 中明确列出其应用程序。您可以在 Erlang 文档中找到任何 Erlang 模块的应用程序名称,位于侧边栏中 Erlang 徽标的正下方。

有向图模块

:digraph 和 :digraph_utils 模块包含用于处理由顶点和边构成的有向图的函数。构建图后,其中的算法将有助于找到两个顶点之间的最短路径,或图中的循环。

给定三个顶点,找到从第一个顶点到最后一个顶点的最短路径。

请注意,:digraph 中的函数会就地改变图结构,这是可能的,因为它们是作为 ETS 表实现的,下面将进行解释。

Erlang 存储项

:ets 和 :dets 模块分别处理内存或磁盘中大型数据结构的存储。

ETS 允许您创建包含元组的表。默认情况下,ETS 表受到保护,这意味着只有所有者进程可以写入表,但任何其他进程都可以读取。ETS 具有一些功能,允许将表用作简单数据库、键值存储或缓存机制。

ets 模块中的函数将作为副作用修改表的状态。

数学模块

:math 模块包含常见的数学运算,包括三角函数、指数函数和对数函数。

队列模块

:queue 模块提供了一种高效实现(双端)FIFO(先进先出)队列的数据结构:

随机模块

:rand 具有返回随机值和设置随机种子的函数。

zip 和 zlib 模块

:zip 模块允许您从磁盘或内存读取和写入 ZIP 文件,以及提取文件信息。

此代码计算 ZIP 文件中的文件数量:

:zlib 模块处理 zlib 格式的数据压缩,如 Unix 系统中的 gzip 命令行实用程序中所述。

"\nMary had a little lamb,\nHis fleece was white as snow,\nAnd everywhere that Mary went,\nThe lamb was sure to go."

学习 Erlang

如果您想深入了解 Erlang,这里有一份在线资源列表,涵盖了 Erlang 的基础知识及其更高级的功能:

本《Erlang 语法:速成课程》简要介绍了 Erlang 的语法。每个代码片段都附有 Elixir 中的等效代码。这是一个机会,您不仅可以接触到 Erlang 的语法,还可以复习您学到的有关 Elixir 的知识。

Erlang 的官方网站有一个简短的教程。有一章带有图片,简要描述了 Erlang 的并发编程原语。

《学习 Erlang 大有裨益!》是一本介绍 Erlang 及其设计原则、标准库、最佳实践等内容的出色入门书。阅读完上述速成课程后,您就可以安全地跳过本书中主要涉及语法的前几章。当您读到《并发指南》一章时,真正的乐趣就从这里开始了。

我们的最后一步是查看调试时可能使用的现有 Elixir(和 Erlang)库。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/352168.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++高阶】掌握C++多态:探索代码的动态之美

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C “ 登神长阶 ” 🤡往期回顾🤡:C继承 🌹🌹期待您的关注 🌹🌹 ❀继承 📒1. 多态的定义及实现&…

你好,Jetpack Compose

文章目录 为什么选 Jetpack Compose先决条件新建项目新建虚拟设备运行项目 为什么选 Jetpack Compose Jetpack Compose 是 Android 开发最新的、现代化的 UI 框架开发者几乎只需要使用 Kotlin 一门语言即可完成 App 开发(Java 是基础,有些源码是 Java 写…

六西格玛助力便携式产品功耗大降:打造绿色节能新标杆!

随着功能的日益强大,便携式电子产品的功耗问题也日益凸显,成为制约产品性能提升和用户体验改善的关键因素。为了应对这一挑战,越来越多的企业开始探索应用六西格玛方法来降低便携式产品的功耗,实现绿色节能的目标。 六西格玛是一…

Allegro光绘Gerber文件、IPC网表、坐标文件、装配PDF文件导出打包

Allegro光绘Gerber文件、IPC网表、坐标文件、装配PDF文件导出打包 一、Gerber文件层叠与参数设置二、装配图文件设置导出三、光绘参数设置四、Gerber孔符图、钻孔表及钻孔文件输出五、输出Gerber文件六、输出IPC网表七、导出坐标文件八、文件打包 一、Gerber文件层叠与参数设置…

12. Django 第三方功能应用

12. 第三方功能应用 因为Django具有很强的可扩展性, 所以延伸了第三方功能应用. 通过本章的学习, 读者能够在网站开发过程中快速实现API接口开发, 验证码生成与使用, 站内搜索引擎, 第三方网站实现用户注册, 异步任务和定时任务, 即时通信等功能.12.1 Django Rest Framework框…

基于C++、MFC和Windows套接字实现的简单聊天室程序开发

一、一个简单的聊天室程序 该程序由服务器端和客户端两个项目组成,这两个项目均基于对话框的程序。服务器端项目负责管理客户端的上线、离线状态,以及转发客户端发送的信息。客户端项目则负责向服务器发送信息,并接收来自服务器的信息&#…

表 达式树

》》》可以借助 LINQPad工具 using System; using System.Collections.Generic; using System.Data.Entity; using System.Linq; using System.Linq.Expressions; using System.Text; using System.Threading.Tasks; using System.Transactions;namespace EFDemo {public class…

C语言最终文章-二叉树

文章目录 前言二叉树的性质二叉树的存储方式顺序存储堆及其应用TopK问题堆排序 链式存储二叉树的练习1.二叉树查找值为x的节点2.判断是否为完全二叉树LC226.翻转二叉树[LC572. 另一棵树的子树](https://leetcode.cn/problems/subtree-of-another-tree/description/)两道选择题 …

单片机建立自己的库文件(4)

文章目录 前言一、新建自己的外设文件夹1.新建外设文件夹,做项目好项目文件管理2.将之前写的.c .h 文件添加到文件夹中 二、在软件中添加项目 .c文件2.1 编译工程保证没问题2. 修改项目列表下的名称 三、在软件项目中添加 .h文件路径四、实际使用测试总结 前言 提示…

Stable Diffusion文生图模型训练入门实战(完整代码)

Stable Diffusion 1.5(SD1.5)是由Stability AI在2022年8月22日开源的文生图模型,是SD最经典也是社区最活跃的模型之一。 以SD1.5作为预训练模型,在火影忍者数据集上微调一个火影风格的文生图模型(非Lora方式&#xff…

创新实训2024.06.17日志:大模型微调总结

前段时间其实我们已经部署了大模型,并开放了对外的web接口。不过由于之前某几轮微调实验的大模型在对话时会有异常表现(例如响应难以被理解),因此我在项目上线后,监控了数据库里存储的对话记录。确定了最近一段时间部署…

多叉树的DFS深度优先遍历,回溯法的基础算法之一

一、前言 多叉树一般用于解决回溯问题。 想必大家都学过二叉树,以及二叉树的深度优先遍历和广度优先遍历,我们思考:能不能将二叉树的DFS转化为多叉树的DFS? 二、多叉树的结构 多叉树的本质,就是一棵普通的树&#x…

【秋招突围】2024届秋招笔试-小红书笔试题-第三套-三语言题解(Java/Cpp/Python)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系计划跟新各公司春秋招的笔试题 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 📧 清隆这边…

Redis作者长文总结LLMs, 能够取代99%的程序员

引言 这篇文章并不是对大型语言模型(LLMs)的全面回顾。很明显,2023年对人工智能而言是特别的一年,但再次强调这一点似乎毫无意义。相反,这篇文章旨在作为一个程序员个人的见证。自从ChatGPT问世,以及后来使…

如何用多线程执行 unittest 测试用例实现方案

前言 使用python做过自动化测试的小伙伴,想必都知道unittest和pytest这两个单元测试框架,其中unittest是python的官方库,功能相对于pytest来要逊色不少,但是uniitest使用上手简单,也受到的很多的小伙伴喜爱。一直以来都…

自然语言处理学习路线(1)——NLP的基本流程

NLP基本流程 【NLP基本流程】 0. 获取语料 1. 语料预处理 2. 特征工程&选择 3. 模型训练 4. 模型输出&上线 【NLP基本流程图】 Reference 1. 自然语言处理(NLP)的一般处理流程!-腾讯云开发者社区-腾讯云 2. https://zhuanlan.zhihu.com/p/55…

leetcode 1355 活动参与者(postgresql)

需求 表: Friends ---------------------- | Column Name | Type | ---------------------- | id | int | | name | varchar | | activity | varchar | ---------------------- id 是朋友的 id 和该表的主键 name 是朋友的名字 activity 是朋友参加的活动的名字 表: Activit…

【每日刷题】Day67

【每日刷题】Day67 🥕个人主页:开敲🍉 🔥所属专栏:每日刷题🍍 🌼文章目录🌼 1. 23. 合并 K 个升序链表 - 力扣(LeetCode) 2. 1189. “气球” 的最大数量 - …

动力学笔记01——共振频率和共振带的数学定义

文章目录 0、背景描述1、正文2. 位移、速度、加速度的共振频率并不相同 0、背景描述 过去一年,我基本都在考虑塔架(尤其是混塔)频率仿真/模态分析的问题。关于这个问题,不仅有地基刚度,还有塔筒本身以及其他影响频率的…

MAC认证

简介 MAC认证是一种基于接口和MAC地址对用户的网络访问权限进行控制的认证方法,它不需要用户安装任何客户端软件。设备在启动了MAC认证的接口上首次检测到用户的MAC地址以后,即启动对该用户的认证操作。认证过程中,不需要用户手动输入用户名…