📅  最后修改于: 2023-12-03 14:40:58.151000             🧑  作者: Mango
Elixir是一种基于Erlang虚拟机的函数式编程语言。它具有高并发、分布式、容错等特点,非常适合构建可扩展的Web应用、网络服务、分布式系统等。
本文将介绍Elixir的基本语法,包括数据类型、函数、模块等。
Elixir支持多种数据类型,包括整数、浮点数、布尔值、原子、字符串、列表、元组、映射等。
Elixir支持多种进制的整数表示,如二进制、八进制、十进制、十六进制等。示例如下:
iex> 0b1010 # 二进制
10
iex> 0o777 # 八进制
511
iex> 123 # 十进制
123
iex> 0x1F # 十六进制
31
Elixir中的浮点数采用IEEE754标准表示,支持科学计数法。示例如下:
iex> 3.14
3.14
iex> 0.1e-10
1.0e-11
Elixir中的布尔值只有两个值:true和false。示例如下:
iex> true
true
iex> false
false
Elixir中的原子是一种常量,通常用于标识符、命名、状态等。原子以冒号开头,示例如下:
iex> :hello
:hello
iex> :world
:world
Elixir中的字符串使用双引号表示,支持Unicode编码。示例如下:
iex> "hello"
"hello"
iex> "中文"
"中文"
Elixir中的列表类似于数组,支持动态增删改查。列表用方括号表示,示例如下:
iex> [1, 2, 3]
[1, 2, 3]
iex> list = [4, 5, 6]
[4, 5, 6]
iex> [1, 2] ++ list
[1, 2, 4, 5, 6]
iex> [1, 2, 3, 4] -- [2, 4]
[1, 3]
iex> hd(list)
4
iex> tl(list)
[5, 6]
iex> length(list)
3
元组是一种不可变的数据结构,用花括号表示。元组可以包含多个元素,每个元素可以是不同的数据类型。示例如下:
iex> {:ok, 123}
{:ok, 123}
iex> tuple_size({:ok, 123})
2
iex> elem({:ok, 123}, 1)
123
Elixir中的映射类似于Java中的Map、Python中的字典,用%{}表示。映射可以存储任意类型的键值对,示例如下:
iex> map = %{name: "张三", age: 20}
%{age: 20, name: "张三"}
iex> map[:name]
"张三"
iex> Map.put(map, :gender, "男")
%{age: 20, gender: "男", name: "张三"}
函数是Elixir中的基本单元,函数名以小写字母开头,用驼峰式命名规则。Elixir中的函数支持多态,同一个函数名可以对应多个实现,根据传入参数的不同调用不同的实现。
示例如下:
defmodule Math do
def add(x, y) do
x + y
end
def add(x, y, z) do
x + y + z
end
end
iex> Math.add(1, 2)
3
iex> Math.add(1, 2, 3)
6
模块是Elixir中组织代码的方式。模块用defmodule定义,模块名以大写字母开头,通常与文件名相同。模块中定义的函数和变量只在模块内部可见,可以通过模块名调用。
示例如下:
defmodule HelloWorld do
def hello(name) do
IO.puts "Hello, #{name}!"
end
end
iex> HelloWorld.hello("World")
Hello, World!
:ok
本文介绍了Elixir的基本语法,包括数据类型、函数、模块等。Elixir是一种高效、灵活、强大的函数式编程语言,非常适合构建现代化的Web应用、网络服务、分布式系统等。