- Elixir 教程
- Elixir - 首页
- Elixir - 概述
- Elixir - 环境
- Elixir - 基本语法
- Elixir - 数据类型
- Elixir - 变量
- Elixir - 运算符
- Elixir - 模式匹配
- Elixir - 决策
- Elixir - 字符串
- Elixir - 字符列表
- Elixir - 列表和元组
- Elixir - 关键字列表
- Elixir - 映射
- Elixir - 模块
- Elixir - 别名
- Elixir - 函数
- Elixir - 递归
- Elixir - 循环
- Elixir - 可枚举
- Elixir - 流
- Elixir - 结构体
- Elixir - 协议
- Elixir - 文件 I/O
- Elixir - 进程
- Elixir - 符号
- Elixir - 列表推导式
- Elixir - 类型声明
- Elixir - 行为
- Elixir - 错误处理
- Elixir - 宏
- Elixir - 库
- Elixir 有用资源
- Elixir - 快速指南
- Elixir - 有用资源
- Elixir - 讨论
Elixir - 数据类型
使用任何语言都需要了解该语言支持的基本数据类型。本章将讨论Elixir语言支持的7种基本数据类型:整数、浮点数、布尔值、原子、字符串、列表和元组。
数值类型
Elixir,像任何其他编程语言一样,同时支持整数和浮点数。如果您打开您的Elixir shell 并输入任何整数或浮点数作为输入,它将返回其值。例如:
42
运行上述程序时,会产生以下结果:
42
您还可以使用八进制、十六进制和二进制基数定义数字。
八进制
要以八进制基数定义数字,请在其前面加上 '0o'。例如,八进制的 0o52 等于十进制的 42。
十六进制
要以十进制基数定义数字,请在其前面加上 '0x'。例如,十六进制的 0xF1 等于十进制的 241。
二进制
要以二进制基数定义数字,请在其前面加上 '0b'。例如,二进制的 0b1101 等于十进制的 13。
Elixir 支持 64 位双精度浮点数。它们也可以使用指数样式定义。例如,10145230000 可以写成 1.014523e10。
原子
原子的名称就是其值。它们可以使用冒号 (:) 符号创建。例如:
:hello
布尔值
Elixir 支持 true 和 false 作为布尔值。这两个值实际上分别附加到原子 :true 和 :false。
字符串
Elixir 中的字符串用双引号括起来,并使用 UTF-8 编码。它们可以跨越多行并包含插值。要定义字符串,只需用双引号括起来即可:
"Hello world"
要定义多行字符串,我们使用类似于 python 的语法,使用三个双引号:
""" Hello World! """
我们将在字符串章节中深入学习字符串、二进制和字符列表(类似于字符串)。
二进制
二进制是用 << >> 括起来的字节序列,用逗号分隔。例如:
<< 65, 68, 75>>
二进制主要用于处理位和字节相关的数据(如有)。默认情况下,它们可以在每个值中存储 0 到 255。可以使用 size 函数增加此大小限制,该函数指示存储该值应占用多少位。例如:
<<65, 255, 289::size(15)>>
列表
Elixir 使用方括号指定值列表。值可以是任何类型。例如:
[1, "Hello", :an_atom, true]
列表带有内置的列表头和列表尾函数,名为 hd 和 tl,它们分别返回列表的头和尾。有时,当您创建一个列表时,它将返回一个字符列表。这是因为当 Elixir 看到一个可打印的 ASCII 字符列表时,它会将其打印为字符列表。请注意,字符串和字符列表并不相等。我们将在后面的章节中进一步讨论列表。
元组
Elixir 使用花括号定义元组。与列表一样,元组可以容纳任何值。
{ 1, "Hello", :an_atom, true
这里出现一个问题:当两者都以相同的方式工作时,为什么要同时提供列表和元组?它们有不同的实现。
列表实际上存储为链表,因此在列表中插入和删除速度非常快。
另一方面,元组存储在连续的内存块中,这使得访问它们的速度更快,但在插入和删除时会增加额外的成本。