Elixir学习笔记
文章平均质量分 84
Elixir官方文档学习笔记
chenxupest
这个作者很懒,什么都没留下…
展开
-
Elixir学习笔记——可选语法表
在前面的章节中,我们了解到 Elixir 语法允许开发人员在一些情况下省略分隔符,以使代码更具可读性。例如,我们了解到括号是可选的:并且 do-end 块相当于关键字列表:关键字列表使用 Elixir 的常规符号来分隔参数,其中我们用逗号分隔每个键值对,每个键后面跟着 :。在 do 块中,我们去掉了冒号和逗号,并用换行符分隔每个关键字。它们非常有用,因为它们在编写代码块时消除了冗长。大多数时候,我们使用块语法,但知道它们是等效的会很好。原创 2024-06-17 17:32:56 · 352 阅读 · 0 评论 -
Elixir学习笔记——Erlang 库
Elixir 提供了与 Erlang 库的出色互操作性。事实上,Elixir 不鼓励简单地包装 Erlang 库,而是直接与 Erlang 代码交互。在本节中,我们将介绍一些 Elixir 中没有的最常见和最有用的 Erlang 功能。Erlang 模块的命名约定与 Elixir 不同,并且以小写字母开头。在这两种情况下,模块名称都是原子,我们通过分派到模块名称来调用函数:随着您对 Elixir 的熟练程度不断提高,您可能希望更详细地探索 Erlang STDLIB 参考手册。原创 2024-06-17 17:51:21 · 1072 阅读 · 0 评论 -
Elixir学习笔记——调试
在 Elixir 中,有多种调试代码的方法。在本章中,我们将介绍一些较常见的方法。原创 2024-06-17 18:04:24 · 680 阅读 · 0 评论 -
Elixir学习笔记——自定义符号
正如本章开头所暗示的,Elixir 中的符号是可扩展的。事实上,使用符号 ~r/foo/i 相当于使用二进制和字符列表作为参数调用 sigil_r:我们可以通过 sigil_r 访问 ~r 符号的文档:我们还可以通过实现遵循 sigil_{character} 模式的函数来提供我们自己的符号。例如,让我们实现返回整数的 ~i 符号(使用可选的 n 修饰符使其为负数):自定义符号可以是单个小写字符,也可以是大写字符后跟更多大写字符和数字。符号还可以在宏的帮助下用于执行编译时工作。原创 2024-06-17 16:37:38 · 650 阅读 · 0 评论 -
Elixir学习笔记——编写文档
Elixir 将文档视为一等级别类。文档必须易于编写且易于阅读。在本指南中,您将学习如何在 Elixir 中编写文档,涵盖模块属性、样式实践和文档测试等结构。原创 2024-06-17 17:23:43 · 676 阅读 · 0 评论 -
Elixir学习笔记——try, catch, and rescue
Elixir 有三种错误机制:errors, throws, and exits。在本章中,我们将探索每种机制,并说明何时应使用它们。原创 2024-06-17 17:00:34 · 835 阅读 · 0 评论 -
Elixir学习笔记——速构(函数式编程基础)
在 Elixir 中,循环遍历 Enumerable 是很常见的,通常会过滤掉一些结果并将值映射到另一个列表中。速构是此类构造的语法糖:它们将这些常见任务分组为 for 特殊形式。例如,我们可以将一串整数映射到它们的平方值:速构由三部分组成:生成器、过滤器和可收集物。原创 2024-06-17 16:07:36 · 297 阅读 · 0 评论 -
Elixir学习笔记——结构
要定义结构,请使用 defstruct/1 构造:defstruct 使用的关键字列表定义了结构将具有哪些字段及其默认值。结构采用其定义模块的名称。在上面的示例中,我们定义了一个名为 User 的结构。原创 2024-06-17 14:09:21 · 550 阅读 · 0 评论 -
Elixir学习笔记——协议
协议是一种在 Elixir 中实现多态性的机制,您希望行为根据数据类型而变化。我们已经熟悉解决此类问题的一种方法:通过模式匹配和保护子句。考虑一个简单的实用程序模块,它会告诉我们输入变量的类型:如果此模块的使用仅限于您自己的项目,您将能够继续为每种新数据类型定义新的 type/1 函数。但是,如果此代码作为依赖项由多个应用程序共享,则可能会出现问题,因为没有简单的方法来扩展其功能。这就是协议可以帮助我们的地方:协议允许我们根据需要扩展尽可能多的数据类型的原始行为。原创 2024-06-17 15:17:41 · 526 阅读 · 0 评论 -
Elixir学习笔记——匿名函数
Elixir 中的匿名函数由关键字 fn 和 end 分隔:3true在上面的例子中,我们定义了一个匿名函数,它接收两个参数 a 和 b,并返回 a + b 的结果。参数始终位于 -> 的左侧,而要执行的代码位于右侧。匿名函数存储在变量 add 中。我们可以通过向其传递参数来调用匿名函数。请注意,调用匿名函数需要在变量和括号之间有一个点 (.)。当您调用存储在变量 add 中的匿名函数时,点会使其清晰,而不是调用名为 add/2 的函数。原创 2024-06-04 19:48:30 · 1099 阅读 · 0 评论 -
Elixir学习笔记——模块和函数
在模块内部,我们可以使用 def/2 定义函数,使用 defp/2 定义私有函数。使用 def/2 定义的函数可以从其他模块调用,而私有函数只能在本地调用。enda + bendend函数声明还支持保护和多个子句。如果函数有多个子句,Elixir 将尝试每个子句,直到找到匹配的子句。以下是检查给定数字是否为零的函数的实现:def zero?后面的问号表示此函数返回布尔值。原创 2024-06-05 11:58:42 · 954 阅读 · 0 评论 -
Elixir学习笔记——模块属性
Elixir 中的模块属性有三个用途:1.作为模块和函数注释2.作为编译期间使用的临时模块存储3.作为编译时常量让我们检查一下这些示例。原创 2024-06-15 17:46:39 · 572 阅读 · 0 评论 -
Elixir学习笔记——输入输出和文件系统
本章介绍输入/输出机制、文件系统相关任务以及相关模块(如 IO、File 和 Path)。IO 系统提供了一个很好的机会来阐明 Elixir 和 Erlang VM 的一些思维模式和新奇思想。原创 2024-06-15 16:50:49 · 563 阅读 · 0 评论 -
Elixir学习笔记——进程(Processes)
在 Elixir 中,所有代码都在进程内运行。进程彼此隔离,彼此并发运行并通过消息传递进行通信。进程不仅是 Elixir 中并发的基础,而且还提供了构建分布式和容错程序的方法。Elixir 的进程不应与操作系统进程混淆。Elixir 中的进程在内存和 CPU 方面非常轻量级(甚至与许多其他编程语言中使用的线程相比也是如此)。因此,同时运行数万甚至数十万个进程并不罕见。在本章中,我们将学习生成新进程的基本构造,以及在进程之间发送和接收消息。原创 2024-06-14 18:22:52 · 912 阅读 · 0 评论 -
Elixir学习笔记——模式匹配
在本章中,我们将了解 Elixir 中 = 运算符为何称为匹配运算符,以及如何使用它在数据结构中进行模式匹配。我们将了解用于访问先前绑定的值的固定运算符 ^。原创 2024-06-04 19:08:20 · 718 阅读 · 0 评论 -
Elixir学习笔记——可枚举和流
虽然 Elixir 允许我们编写递归代码,但我们对集合执行的大多数操作都是在 Enum 和 Stream 模块的帮助下完成的。让我们学习如何操作。Elixir 提供了可枚举的概念以及与之配合使用的 Enum 模块。我们已经学习了两种可枚举:列表和映射。[2, 4, 6][2, 12]Enum 模块提供了大量函数来转换、排序、分组、过滤和检索可枚举中的项目。它是开发人员在 Elixir 代码中经常使用的模块之一。有关 Enum 模块中所有函数的一般概述,请参阅 Enum 备忘单。原创 2024-06-14 16:53:31 · 652 阅读 · 0 评论 -
Elixir学习笔记——递归
Elixir 不提供循环构造。相反,我们利用递归和高级函数来处理集合。本章将探讨前者。原创 2024-06-05 12:55:18 · 876 阅读 · 0 评论 -
Elixir学习笔记——基本类型
在本章中,我们将学习更多关于 Elixir 基本类型:整数、浮点数、布尔值、原子和字符串。其他数据类型,如列表和元组,将在下一章中探讨。原创 2024-06-04 18:35:56 · 906 阅读 · 0 评论 -
Elixir学习笔记——别名、需要、导入和使用
为了便于软件重用,Elixir 提供了三个指令(alias、require 和 import)以及一个名为 use 的宏,总结如下:# 为模块添加别名,以便可以将其称为 Bar 而不是 Foo.Bar# 需要模块才能使用其宏# 从 Foo 导入函数,以便可以在不带 `Foo.` 前缀的情况下调用它们import Foo# 调用 Foo 中定义的自定义代码作为扩展点use Foo我们现在将详细探讨它们。原创 2024-06-15 17:27:35 · 746 阅读 · 0 评论 -
Elixir学习笔记——关键字列表和映射
在上一节中,我们将映射用作键值数据结构,其中可以随时添加或删除键。但是,使用预定义键集创建映射也很常见。它们的值可能会更新,但永远不会添加或删除新键。当我们知道正在处理的数据的形状时,这很有用,如果我们得到不同的键,则很可能意味着其他地方犯了错误。我们使用与上一节相同的语法定义此类映射,但所有键都必须是原子:从上面的打印结果可以看出,Elixir 还允许您使用与关键字列表相同的 key: value 语法编写原子键的映射。原创 2024-06-05 11:33:54 · 691 阅读 · 0 评论 -
Elixir学习笔记——二进制、字符串和字符列表
在“基本类型”中,我们学习了一些关于字符串的知识,并使用 is_binary/1 函数进行检查:"hello"true在本章中,我们将明确二进制到底是什么、它们与字符串的关系以及 Elixir 中单引号值“like this”的含义。虽然字符串是计算机语言中最常见的数据类型之一,但它们却非常复杂,经常被误解。要理解 Elixir 中的字符串,我们必须了解 Unicode 和字符编码,特别是 UTF-8 编码。原创 2024-06-04 20:26:31 · 813 阅读 · 0 评论 -
Elixir学习笔记——case, cond, and if
在本章中,我们将学习 case、cond 和 if 控制流结构。原创 2024-06-04 19:26:16 · 677 阅读 · 0 评论 -
Elixir学习笔记——列表和元组
在本章中,我们将学习 Elixir 中最常用的两种集合数据类型:列表和元组。原创 2024-06-04 19:09:54 · 851 阅读 · 0 评论 -
Elixir学习笔记——第一章
现在,让我们先运行 iex(如果您使用的是 Windows PowerShell,则运行 iex.bat,其中 iex 是 PowerShell 命令),它代表 Interactive Elixir。注意:如果您使用的是 Windows 并且运行的是 Erlang/OTP 26 之前的版本,您还可以尝试 iex --werl(PowerShell 上的 iex.bat --werl),这可能会提供更好的体验,具体取决于您使用的控制台。请注意,您的会话中的某些细节(例如版本号)可能会略有不同,但这并不重要。原创 2024-06-04 17:56:22 · 612 阅读 · 0 评论