Erlang 学习之第四天 . 列表,文件,原子,映射,元组,记录
Erlang 列表
列表属于数据类型里面的集合, 列表是用于存储数据项集合的结构。在Erlang中,列表是通过将值括在方括号 [ ]中来创建的。
实例:
start() ->
Lst1 = [1,2,3],
io:fwrite("~w~n",[Lst1]). 输出结果是 : [1 2 3]
以下是列表的方法说明:
all: 语法: all(Pred,lst) 如果Pred(Elem)对List中的所有元素Elem返回true,则返回true,否则返回false。
-
Pred −将应用于字符串的谓词函数。
- Lst - 值列表
start() ->
Lst1 = [1,2,3],
Predicate = fun(E) -> E rem 2 == 0 end,
Status = all(Predicate, Lst1),
io:fwrite("~w~n",[Status]).
any 语法: any(Pred,lst) 如果 Pred (Elem)对 List 中至少一个元素 Elem 返回 true,则返回 true。
sort 语法:sort(lst) 对元素列表进行排序。Lst是需要排列的元素 返回元素的排列列表
Erlang 文件
使用I / O时,Erlang提供了许多方法。 它具有更简单的类,可为文件提供以下功能-
-
读取文件
- 读取文件
-
{ok, Data} = file:read_file("example.txt"),
io:format("File content: ~s~n", [Data]).
-
- 读取文件
-
写入文件
- 写入文件
-
ok = file:write_file("example.txt", "Hello, world!\n"),
io:format("File written successfully.~n").
-
- 写入文件
-
查看文件是文件还是目录
-
- 检查文件类型
case filelib:is_file("example.txt") of
true -> io:format("It's a file.~n");
false -> io:format("It's not a file.~n")
end.
- 检查文件类型
-
Erlang 原子
在Erlang中,原子是不可变的符号(标识符),通常用于表示常量、命名函数、模块、键和其他数据结构中的键。
原子以小写字母开头,可以包含字母、数字、下划线和 '@'、'#'、'$' 等特殊字符。
1, 将原子用作变量名: Atom = hello. % 将原子 hello 赋给变量 Atom
2, 将原子用作函数名:
say_hello() -> io:format("Hello, world!~n").
invoke_function() ->
say_hello(). % 调用函数 say_hello
3, 将原子用作模块名:
-module(example_module).
-export([example_function/0]).
example_function() ->
io:format("This is an example function.~n").
Erlang 映射
映射是具有可变数量的键-值关联的复合数据类型。映射中的每个键值关联都称为关联对。该对中的键和值部分称为元素。关联对的数量被称为映射的大小。
实例 : K - value 数据类型
-module(helloworld).
-export([start/0]).
start() ->
M1 = #{name=>john,age=>25},
io:fwrite("~w",[map_size(M1)]).
Erlang 元祖
元祖是有序的不可变集合,可以包含任意数量的元素.元祖用大括号{ } 包围, 元祖之间用逗号分隔.例如: "{1, hello, 3.14}"
Erlang 记录
Erlang具有创建记录的额外功能。这些记录由字段组成。例如,您可以定义一个个人记录,其中包含2个字段,一个是id,另一个是name字段。然后,在Erlang中,您可以创建该记录的各种实例,以定义具有不同名称和ID的多个人。
-module(helloworld).
-export([start/0]).
-record(person, {name = "", id}).
start() ->
P = #person{name = "John",id = 1},
P1 = P#person{name = "Dan"},
io:fwrite("~p~n",[P1#person.id]),
io:fwrite("~p~n",[P1#person.name]).
输出结果是 1 "Dan"