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 == 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"

 

posted @ 2024-02-05 12:01  d-w  阅读(49)  评论(0编辑  收藏  举报