Erlang 学习笔记-第一天 常用数据类型和数据结构

数据类型:

1.Atom(原子): Atom是一个不可变的符号常量,用于表示标识符和常量.Atom以小写字符开头,可以包含字母,数字,下划线和@符号.例如:ok, hello, true

2.Number(数字):数字可以是整数或者是浮点数.整数没有大小限制,可以是正数,负数或者零. 浮点数由整数部分和小数部分组成,可以用科学计数法表示.例如 :45, 3.14, 1.0e-6

3.Tuple(元祖): 元祖是有序的不可变集合,可以包含任意数量的元素.元祖用大括号{ }包围, 元祖之间用逗号分隔.例如: "{1, hello, 3.14}"

4.List(列表): 列表是一个有序可变的集合,可以包含任意元素,列表用方括号[ ]包围,元素之间用逗号分隔.列表的元素可以是任意类型.例如 : [1, 2, 3, hello]

5.binary(二进制): 二进制是一种特殊类型的数据类型, 用于储存二进制数据.二进制以<< 和 >> 符合表示, 可以包含任意数量的字节.例如 : << 1, 2, 3>>

6.Map(映射): 映射是一种关联数组,用于将键映射到值. 键和值可以是任意类型.映射用大括号 '#{ }'表示, 键值对之间用逗号分隔.例如 : '#{ name => "John", age=> 30}'

Function(函数): 函数是一种特殊的数据类型,可以作为值传递和存储. 函数由参数列表和函数体组成, 可以使用匿名函数语法定义. 例如: 'fun(X) -> X + 1  end '

数据结构:

1.List(列表): 列表是一种常用的数据结构,用于存储有序的元素序列.Erlang中的列表是可变的,可以在运行时动态的添加,删除,和修改元素.

2.Tuple(元祖): 元祖是一个有序的不可变的数据结构,用于储存固定数量的元素. 元祖一旦创建就不能够修改, 但可以通过模式匹配来访问其中的元素.

3.Map(映射): 映射是一种关联的数组,用于将键映射到值. 映射提供了高效的键值查找,和更新操作, 适用于需要快速访问和修改键值对的场景.

4.Binary(二进制): 二进制是一种用于储存二进制的数据机构.二进制提供了高效的二进制数据处理操作,例如位操作,模式匹配和二进制数据解析.

 

  1. 整数(Integer):任意精度的整数,可以表示任意大的整数值。

  2. 浮点数(Float):双精度浮点数,用于表示小数或浮点数值。

  3. 原子(Atom):不可变的符号常量,用于表示标识符或命名。

  4. 二进制(Binary):二进制数据类型,用于表示字节串或二进制数据。

  5. 列表(List):由一系列元素构成的数据结构,元素可以是任意类型。

  6. 元组(Tuple):有序的不可变数据结构,用于存储固定数量的元素。

  7. 字典(Map):通过 maps 模块提供,用于键值对的映射关系。

  8. 函数(Function):函数是一等公民,在 Erlang 中可以像其他数据类型一样进行传递和操作。

  9. 进程(Process):轻量级并发执行的单元,具有独立的堆栈和消息邮箱。

  10. 端口(Port):与外部系统进行通信的接口。

  11. PID(Process Identifier):进程的唯一标识符,用于向进程发送消息。

  12. 参考(Reference):唯一标识符,用于跟踪特定的 Erlang 进程间通信。

 

1. Atom(原子)

  • 实现原理:Atom 是 Erlang 中的符号常量,类似于枚举类型。它们在编译时被解析为整数值,可以用于表示标识符或常量。
  • 操作:通常用于表示状态、命名等常量值。  示例代码:
  • % 示例代码
    ok.
    hello.
    true.

2. Number(数字)

  • 实现原理:Erlang 支持整数和浮点数。整数没有固定大小限制,可以是任意大小的正数、负数或零。浮点数由整数部分和小数部分组成,可以使用科学计数法表示。
  • 操作:支持基本的数学运算,如加减乘除等。
  • % 示例代码
    42.
    3.14.
    1.0e-6.

3. Tuple(元组)

  • 实现原理:元组是有序的不可变集合,可以包含任意数量的元素。元组用大括号 { } 包围,元素之间用逗号分隔。
  • 操作:可以通过模式匹配或元素访问来获取元组中的元素。
  • % 示例代码
    Tuple = {1, hello, 3.14},
    Tuple = {First, Second, Third}
    io:format("First element: ~p~n", [First]).

4. List(列表)

  • 实现原理:列表是一个有序的可变集合,可以包含任意数量的元素。列表用方括号 [] 包围,元素之间用逗号分隔。
  • 操作:支持元素的添加、删除、修改等操作,以及列表的合并、分割等操作。
  • % 示例代码
    List = [1, 2, 3, hello],
    [First | Rest] = List,
    io:format("First element: ~p~n", [First]).

5. Binary(二进制)

  • 实现原理:二进制是一种特殊的数据类型,用于存储二进制数据。二进制以 <<>> 符号表示,可以包含任意数量的字节。
  • 操作:支持位操作、模式匹配和二进制数据解析等操作。
  • % 示例代码
    Binary = <<1, 2, 3>>,
    <<First:8, Rest/binary>> = Binary,
    io:format("First byte: ~p~n", [First]).

 

6. Map(映射)

    • 实现原理:映射是一种关联数组,用于将键映射到值。映射用大括号 #{} 表示,键值对之间用逗号分隔。
    • 操作:支持键值对的添加、删除、修改等操作,以及键值对的访问。
    • % 示例代码
      Map = #{name => "John", age => 30},
      Name = maps:get(name, Map),
      io:format("Name: ~s~n", [Name]).

7. Function(函数)

  • 实现原理:函数是一种特殊的数据类型,可以作为值传递和存储。函数由参数列表和函数体组成,可以使用匿名函数语法定义。
  • 操作:可以像其他数据类型一样进行传递、存储和调用。
  • % 示例代码
    AddOne = fun(X) -> X + 1 end,
    Result = AddOne(5),
    io:format("Result: ~p~n", [Result]).

 

 
posted @ 2024-02-02 16:56  d-w  阅读(53)  评论(0编辑  收藏  举报