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)库。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

电商风控指南 | 直播间里的藏匿的“羊毛党”,普通消费者看不到

目录 直播间里的羊毛党 电商要针对性进行防范 随着618网购节的开启,各大电商平台的直播间再次成为消费者关注的焦点。在5月20日的一场酒水电商直播中,主播仅用43分钟便实现了成交额破亿,售出3万瓶白酒。然而,这些“秒杀”特价商品…

Excel加密怎么设置?这5个方法不容错过!(2024总结)

Excel加密怎么设置?如何不让别人未经允许查看我的excel文件?如果您也有这些疑问,那么千万不要错过本篇文章了。今天小编将向大家分享excel加密的5个简单方法,保证任何人都可以轻松掌握!毫无疑问的是,为Exce…

SpringBoot配置第三方专业缓存技术jetcache远程缓存方案和本地缓存方案

JetCache 是一个基于 Java 的分布式缓存解决方案,旨在提供高性能和可扩展性。它支持多种后端存储,如 Redis、Hazelcast、Tair 等,可以作为应用程序的缓存层,有效地提升数据访问性能和响应速度。 JetCache 的主要特点包括&#x…

语音识别相关文章整理目录

一、语音大模型架设与功能实现 使用sherpa-ncnn进行中文语音识别(ubuntu22)-CSDN博客文章浏览阅读953次,点赞30次,收藏26次。请注意,需要首先安装安装了所有必要的依赖项,包括 CMake、Git 和一个合适的 C/…

Vue路由讲解-05

这里的路由并不是指我们平时所说的硬件路由器,这里的路由就是SPA(single page application单页应用)的路径管理器。再通俗的说,vue-router就是WebApp的链接路径管理系统。 vue-router是Vue.js官方的路由插件,它和vue.j…

一道全等三角形证明题

接着上次那道题 一道初中一年级几何题解析,再来做一道初中一年级下半学期几何题目: 傍晚丢垃圾散步时看到小小的学生学习群里丢了这个题目,想到一个解法。实在构造不出契合题干阅读材料结论的三角形,索性先根据这结论做一个推论…

云动态摘要 2024-06-17

给您带来云厂商的最新动态,最新产品资讯和最新优惠更新。 最新优惠与活动 [低至1折]腾讯混元大模型产品特惠 腾讯云 2024-06-06 腾讯混元大模型产品特惠,新用户1折起! 云服务器ECS试用产品续用 阿里云 2024-04-14 云服务器ECS试用产品续用…

从《2024年人工智能指数报告》 看AI的最新发展趋势

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 《2024年人工智能指数报告》是由斯坦福大学的“以人为本”人工智能研究所(Stanford HAI)发布的,具体发布时间…

使用宝塔面板部署Django应用(不成功Kill Me!)

使用宝塔面板部署Django应用 文章目录 使用宝塔面板部署Django应用 本地操作宝塔面板部署可能部署失败的情况 本地操作 备份数据库 # 备份数据库 mysqldump -u root -p blog > blog.sql创建requirements # 创建requirements.txt pip freeze > requirements.txt将本项目…

【unity笔记】三、冰山碰撞变成碎块效果

一、模型准备 共需准备两个模型,一个原始模型,一个破碎后的模型。 破碎后的模型制作教程: 下载Blender 导入原始模型在添加偏好设置中添加Cell Fracture插件,调整模型碎裂效果。导出,保存到项目预制体文件夹。 二、…

3d模型怎么加室外场景渲染的步骤---模大狮模型网

在进行3D模型渲染时,将其放置在室外场景中可以提高渲染效果和真实感。以下是将3D模型加入室外场景的步骤: 1. 选择合适的场景:首先需要选择合适的室外场景,例如城市街道、森林、海滩等等。选择场景时需要考虑模型的大小和比例&…

教育培训系统(FastAdmin+ThinkPHP+Unipp)

引领学习新风尚 📚 引言:教育新篇章 随着科技的不断发展,教育形式也在不断创新与变革。教育培训系统作为这一变革的重要载体,正逐渐改变着我们的学习方式。今天,就让我们一起探索教育培训系统的魅力,看看它…

Navicat和SQLynx功能比较三(数据导出:使用MySQL近千万数据测试)

数据导出的功能在数据库管理工具中是最普遍的功能之一。所以数据导出的功能稳定性和性能也是数据库管理工具是否能很好地满足应用需求的一个考虑因素。 目录 1. 整体比较 2. 示例 2.1 前置环境 2.2 Navicat导出 2.3 SQLynx导出 2.4 性能对比结果(690万行数据&…

浙江电信联合中兴通讯取得新突破,完成融合边缘商用验证

前不久,浙江电信联合中兴通讯在融合边缘方面取得新突破,在嘉兴完成了融合边缘的商用验证,并发布了商用版本。接下来,双方在融合边缘方面正式进入商用阶段,有效赋能新质生产力。    随着数字经济的快速发展&#xff0…

github国内加速访问有效方法

这里只介绍实测最有效的一种方法,修改主机的Hosts文件,如果访问github网站慢或者根本无法访问的时候可以采用下面方法进行解决。 1、搜索一个IP查询网站 首先百度搜索选择一个IP查询的网站,这里我用下面这个网站(如果该网站失效…

C#——类和对象详情

类和对象 类 类是一种数据结构,它可以包含数据成员(常量和字段)、函数成员(方法、属性、事件、索引器、运算符、实例构造函数、静态构造函数和析构函数)以及嵌套类型。类类型支持继承,继承是一种机制&…

【大分享04】OFD版式赋能政务服务电子文件归档和电子档案管理

关注我们 - 数字罗塞塔计划 - 本篇是参加由电子文件管理推进联盟联合数字罗塞塔计划发起的“大分享”活动投稿文章,来自北京数科网维技术有限责任公司,作者:张严。 PART1 政务服务电子文件归档和电子档案管理背景 政务服务是政务服务机构…

3大法则教你高效制定奖励规则(含参考案例)

在实施全民分销的过程中,SaaS产品方和合作伙伴推广者之间的合作关系可以用河马与牛椋鸟之间的共生关系来形容——牛椋鸟以栖息在河马背上并清理其身上的昆虫为生。这种关系对两者来说都是极其有益的:牛椋鸟获得了稳定的食物来源,而河马则有效…

在线预览多类型文件_全栈

目录 一、下载运行项目 二、项目功能 三、前端项目引用 四、文件预览样式更改 在做项目时经常用到在线预览文件,给大家介绍一个好用的在线预览文件项目。使用技术是后端Java,前端Freemarker模板。 FreeMarker 特别适应与 MVC 模式的 Web 应用&#x…

全篇创新点!图像融合9大魔改创新方案,暴力涨点

在处理复杂图像数据和提升图像质量时,采用图像融合的技术是个更好的选择。 这是因为:图像融合能够整合来自不同图像源的信息,为我们提供比单一图像更丰富、更全面、更高质量的图像数据。这种技术不仅减少了数据冗余,还增强了图像…