`
somefuture
  • 浏览: 1089794 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

erlang的数据类型 (2)

 
阅读更多

 继续前面说列表。

列表里面的元素,第一个成为head,head之后的都叫tail。用erlang的内置方法看一下:

> hd([1,2,3,4]).
1
> tl([1,2,3,4]).
[2,3,4]

 为什么要这样呢?因为列表的指针是在头部的,对头部进行操作是最快捷和高效的。

 

使用竖线| 能快速区分头部和尾部:

> [H|T]=[1,2,3,4].
[1,2,3,4]
> H.
1

 竖线运算符还能把两个列表连在一起:

> L = [3,3,4].
[3,3,4]
> LL = [1,1,1|L].
[1,1,1,3,3,4]

 不过竖线后面必须是一个列表:

> [66,77|88].
[66,77|88]
> [66,77|[88]].
"BMX"

 

 

六,列表推导

和python一样,erlang也有列表推导式List comprehensives。

这个语法比较简单,我们看几个例子:

> [2*N || N <- [1,2,3,4]].
[2,4,6,8]
> [X+Y || X <- [1,2], Y <- [2,3]].
[3,4,4,5]
> Weather = [{toronto, rain}, {montreal, storms}, {london, fog},  {paris, sun}, {boston, fog}, {vancouver, snow}].
[{toronto,rain},
 {montreal,storms},
 {london,fog},
 {paris,sun},
 {boston,fog},
 {vancouver,snow}]
> FoggyPlaces = [X || {X, fog} <- Weather].
[london,boston]

 

七,二进制

erlang对二进制的操作也提供了一些方法。

比特是由两个小于号和两个大于号包装的<<>>,每个元素包含一个冒号,元素间用逗号分开:

> Color = 16#F09A29.
15768105
> Pixel = <<Color:24>>.
<<240,154,41>>

 比特也满足模式匹配:

> Pixels = <<213,45,132,64,76,32,76,0,0,234,32,15>>.
<<213,45,132,64,76,32,76,0,0,234,32,15>>
> <<Pix1,Pix2,Pix3,Pix4>> = Pixels.
** exception error: no match of right hand side value <<213,45,132,64,76,32,76,0,0,234,32,15>>
> <<Pix1:24, Pix2:24, Pix3:24, Pix4:24>> = Pixels.
<<213,45,132,64,76,32,76,0,0,234,32,15>>
> <<R:8, G:8, B:8>> = <<Pix1:24>>.
<<213,45,132>>
> R.
213

这里暂不介绍二进制的左移和右移,以及位操作。 

 

八,二进制推导

二进制语法也有推导式,我们简单看几个例子:

> [ X || <<X>> <= <<1,2,3,4,5>>, X rem 2 == 0].     
[2,4]
> Pixels = <<213,45,132,64,76,32,76,0,0,234,32,15>>.
<<213,45,132,64,76,32,76,0,0,234,32,15>>
> RGB = [ {R,G,B} || <<R:8,G:8,B:8>> <= Pixels ].
[{213,45,132},{64,76,32},{76,0,0},{234,32,15}]

 

 

OK,就先这些吧。

0
0
分享到:
评论

相关推荐

    Erlang6大数据存储方式总结

    通过《ets数据结构总结1.txt》和《ets数据结构总结2-Mnesia.txt》,你可以深入了解ETS的各类数据结构及其在连接外部数据库(如《ets数据结构总结3-连接外部数据库.txt》中提到的MySQL)时的应用场景和策略。...

    erlang编程 Introducing Erlang

    它的动态类型系统和强大的类型推断让代码更加灵活。 Simon St. Laurent的《Introducing Erlang》这本书深入浅出地介绍了这些概念,是学习Erlang的理想起点。通过阅读这本书,读者将能够理解Erlang如何处理并发、...

    Erlang_CNode用户指

    3. **Erlang数据类型和API**:介绍CNode API,包括如何在C中表示和操作Erlang的数据类型(如整数、原子、列表等),以及如何调用Erlang函数和处理返回结果。 4. **进程通信**:阐述如何在CNode中创建Erlang进程,...

    erlang_版本24.3.4.4

    - **Erlang的数据类型**:包括原子(atom)、整数、浮点数、字符串、列表、元组、位串等。 - **Pattern Matching**:Erlang的匹配操作符`=`允许在函数调用、case语句和receive语句中进行模式匹配。 熟悉这些概念和...

    erlang资源

    1. **Erlang语法**:涵盖基本的变量、数据类型(如原子、列表、元组和二进制)、控制结构(如case表达式和if语句)以及函数定义。 2. **函数式编程概念**:Erlang是纯函数式语言,书中可能会介绍函数式编程的基本...

    erlang programming

    编程+Erlang.pdf可能会详细介绍Erlang的基础语法、数据类型、过程和模块等概念。 2. **并发编程**:Erlang的并发模型是其独特之处。它通过轻量级进程(Lightweight Processes, LWP)实现并发,进程间通信(Inter-...

    erlang趣学指南

    Erlang是一种动态类型语言,类型检查在运行时进行,这意味着你不需要在代码中声明变量的数据类型。不过,理解Erlang的类型系统对于编写高效且可维护的代码至关重要。 递归在Erlang程序设计中占有重要地位,因为...

    介绍 Erlang binary 和 bit string 数据类型的经典文章

    ### Erlang Binary与Bit String 数据类型详解 #### 引言 Erlang 是一种功能强大且灵活的编程语言,尤其适合开发高并发、分布式及容错性应用。自 R12B 版本以来,Erlang 在处理二进制数据方面引入了两项重大更新:...

    <27>erlang record

    在Erlang中,Record提供了一种方便的方式来定义和访问具有固定字段的数据类型。 在Erlang中,Records是由一个特殊的语法创建的,形如`#record_name{field1 = value1, field2 = value2, ...}`。Record_name是记录的...

    Pragmatic.Programming.Erlang.2nd.Edition

    1. **核心语言和框架基础:**第二版涵盖了Erlang的核心概念和技术细节,包括语法、数据类型、流程控制、函数式编程等基础知识。 2. **社区项目介绍:**书中还详细介绍了Erlang社区中重要的开源项目,如构建工具rebar...

    erlang23.2版windows64位.zip

    4. **动态类型**:Erlang采用动态类型,允许快速开发和迭代,但同时也可能导致运行时错误。 5. **函数式编程**:Erlang是函数式的,强调无副作用的纯函数,以及数据不可变性,这有助于编写简洁、易于理解和测试的...

    erlang压缩包.rar

    其数据类型包括原子(atom)、整数、浮点数、字符串、列表和二进制数据。Erlang使用模式匹配来解构数据结构,并通过消息传递实现进程间的通信。 学习Erlang的关键概念包括: - **模式匹配**:在函数定义中,可以...

    windows下安装Erlang环境

    **动态类型**:Erlang是动态类型的,变量的类型在运行时确定,提供了灵活性。 **及早求值或严格求值**:Erlang的求值策略是及早求值,意味着表达式一旦被引用就会计算其值。 **脚本语言**:Erlang也可作为脚本语言...

    Erlang趣学指南

    (494页带目录的高清扫描版) 这是一本讲解Erlang编程语言的入门指南,内容通俗...内容涉及模块、函数、类型、递归、错误和异常、常用数据结构、并行编程、多处理、OTP、事件处理,以及所有Erlang的重要特性和强大功能。

    erlang jiffy code

    - **编码与解码的类型匹配**:确保 Erlang 数据结构与 JSON 数据类型之间的正确映射。 - **错误处理**:当解码过程中遇到无效 JSON 或编码时出现数据不兼容,需要捕获并处理相应的异常。 - **性能调优**:对于大规模...

    Erlang资料大全

    “Erlang中文基础教程”这部分内容可能包括了Erlang的基础语法、数据类型、控制结构、函数定义、过程创建与通信等方面。对于初学者来说,理解这些基本元素至关重要。例如,Erlang的数据类型包括原子(atom)、整数、...

    erlang win64_18.1

    5. 朴素的数据类型:Erlang的动态类型系统包含原子(atom)、整数、浮点数、列表、二进制等,简单且易于理解。 Erlang在18.1版本中可能引入了一些新特性、改进和修复。例如,可能对性能进行了优化,增加了新的...

    programming erlang src code

    8. 数据类型与模式匹配:Erlang具有丰富的数据类型,如原子、列表、元组等,以及强大的模式匹配功能。源码中可以看到如何利用这些特性编写简洁且高效的代码。 9. 面向连接的网络编程:Erlang的inet模块提供了一套...

    Erlang程序设计第2版附书代码

    1. **基本语法和数据类型**:代码中会涵盖Erlang的基本语法,如变量声明、原子、列表、元组、映射等数据类型的使用。 2. **进程通信**:书中可能会有示例展示如何使用`send`和`receive`进行进程间的消息传递,以及...

    Erlang游戏程序学习完整PDF手册

    - **Erlang基础**:包括基本语法、数据类型、函数定义、模式匹配、过程和模块等。 - **并发编程**:介绍Erlang的进程、消息传递、同步和通信机制,以及如何利用这些特性实现并发。 - **分布式Erlang**:讲解如何在...

Global site tag (gtag.js) - Google Analytics