- 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 - Behave
- Elixir - 错误处理
- Elixir - 宏
- Elixir - 图书馆
- Elixir 有用资源
- Elixir - 快速指南
- Elixir - 有用的资源
- Elixir - 讨论
Elixir - 数据类型
对于使用任何语言,您都需要了解该语言支持的基本数据类型。在本章中,我们将讨论 Elixir 语言支持的 7 种基本数据类型:整数、浮点数、布尔值、Atomics、字符串、列表和元组。
数值类型
Elixir 与任何其他编程语言一样,支持整数和浮点数。如果您打开 Elixir shell 并输入任何整数或浮点数作为输入,它将返回其值。例如,
42
当上面的程序运行时,它会产生以下结果 -
42
您还可以定义八进制、十六进制和二进制的数字。
八进制
要定义八进制数,请在其前面加上“0o”前缀。例如,八进制的 0o52 相当于十进制的 42。
十六进制
要定义十进制数,请在其前面加上“0x”前缀。例如,十六进制的 0xF1 相当于十进制的 241。
二进制
要定义二进制数,请在其前面加上“0b”前缀。例如,二进制的 0b1101 相当于十进制的 13。
Elixir 支持 64 位双精度浮点数。它们也可以使用求幂风格来定义。例如,10145230000可以写成1.014523e10
Atomics
Atomics是常量,其名称就是它们的值。它们可以使用 color(:) 符号创建。例如,
:hello
布尔值
Elixir 支持布尔值true和false 。这两个值实际上分别附加到Atomics :true 和 :false 上。
弦乐
Elixir 中的字符串插入在双引号之间,并以 UTF-8 编码。它们可以跨越多行并包含插值。要定义字符串,只需将其放在双引号中 -
"Hello world"
为了定义多行字符串,我们使用类似于 python 的语法,带有三个双引号 -
""" Hello World! """
我们将在字符串章节中深入了解字符串、二进制文件和字符列表(类似于字符串)。
二进制文件
二进制文件是包含在 << >> 中并用逗号分隔的字节序列。例如,
<< 65, 68, 75>>
二进制文件主要用于处理位和字节相关的数据(如果有的话)。默认情况下,它们可以在每个值中存储 0 到 255。可以通过使用大小函数来增加此大小限制,该函数表示存储该值需要多少位。例如,
<<65, 255, 289::size(15)>>
列表
Elixir 使用方括号来指定值列表。值可以是任何类型。例如,
[1, "Hello", :an_atom, true]
列表带有用于列表头和尾部的内置函数,名为 hd 和 tl,它们分别返回列表的头和尾部。有时,当您创建列表时,它会返回一个字符列表。这是因为当 elixir 看到可打印 ASCII 字符列表时,它会将其打印为字符列表。请注意,字符串和字符列表不相等。我们将在后面的章节中进一步讨论列表。
元组
Elixir 使用大括号来定义元组。与列表一样,元组可以保存任何值。
{ 1, "Hello", :an_atom, true
这里出现了一个问题:当列表和元组的工作方式相同时,为什么要同时提供它们呢?那么他们有不同的实现。
列表实际上是以链表的形式存储的,因此列表中的插入、删除速度非常快。
另一方面,元组存储在连续的内存块中,这使得访问它们更快,但会增加插入和删除的额外成本。