erlang的数据类型比较少,内容也很另类。因为erlang的定位不同。
一,数字
erlang里面没有整形、浮点之类的区分。所有的数都是number.
比如我们计算5/2,一般的语音得到的是2.erlang不一样,它得到2.5
> 5 / 2. 2.5
注意表达式的后面有一个点,erlang使用点来表示完结。
这里例子同时说明 / 在erlang里面不表达整除,那整除怎么办呢?
erlang的运算附也个别,用div表示整除,rem表示取余:
> 5 div 2. 2 > 5 rem 2. 1
其他没有什么特殊的,也是用*表示乘法。
如果想表示10进制以外的数,使用#就行。比如:
> 2#101010. 42 > 8#0677. 447 > 16#AE. 174
分别表示二进制、8进制和16进制。
二,原子 atom
erlang里面有一种十分特别的数据类型,叫原子。
原子类型的命名必须是小写字母开头(除非不是字母开头的),所以erlang里面的变量就不得不必须大写字母开头了(除非不是字母开头的)。
原子类型秉承所见即所得的原则,你看到它的名称就代表了它的值,仅此而已。
你不能给它赋予其他的值,因为和变量一样,它也是不能改变的。它值表示构成它的几个字母而已:
> at = "3434". ** exception error: no match of right hand side value "3434" > at = er. ** exception error: no match of right hand side value er > at = 'at'. at > at = "at". ** exception error: no match of right hand side value "at"
原子外面的单引号可以省略,不过里面有特殊字符就不能了。
注意:原子是不会被垃圾回收的~~
三,布尔类型
true和false也是erlang的关键字。
布尔类型的运算符一般是and、or、not:
> true and false. false > false or true. true > true xor false. true > not false. true > not (true and true). false
xor表示异或。
和其他语言不同的是,and和or在计算的时候一定会把两边的表达式都检查,你期望前面是false就不要继续and了,或者前面是true就不要继续or了,是不行的。这样需要使用andalso和orelse。
不同于其他语言使用==和!=来比较两个变量,erlang使用 =:= 和=/= :
> 5 =:= 5. true > 5 =:= 5.0. false > 5 =/= 5.0. true > 5 /= 5.0. false 20> 5 == 5.0. true
但是你依然可以使用 == 和 /= 来比较。仔细看下它们的区别。
erlang可以使用>= 和 =<,不是<=:
> 1 >= 1. true > 1 =< 1. true
true和false是不和任何数等同的,和原子一样,它们大于所有的数:
> 999999999999999<at. true > 34343<false. true
四,元组
pythoner可能要兴奋一下,没错,erlang也有元组,不过和python有些区别。
元组是使用大括号包装的一些了数据,数据间用逗号分开:
{Element1, Element2, ..., ElementN}.
元组的元素也可以是元组,这没有什么稀罕的。
不过要记着的就是原子元素也是不能匹配的:
> PreciseTemperature = {celsius, 23.213}. {celsius,23.213} > {kelvin, T} = PreciseTemperature. ** exception error: no match of right hand side value {celsius,23.213}
尝试将celsius赋值给kelvin了,失败。
五,列表
和元组类似,不过列表使用中括号来包装:
> [97, 98, 99]. "abc"
尼玛这啥情况?
没错被你发现了,erlang里面的string就是字符列表。
不过让你头疼的并不是这样,而是:
> [97,98,99,4,5,6]. [97,98,99,4,5,6] > [233]. "é"
哭了吧。。。
那就看点过瘾的:
5> [1,2,3] ++ [4,5]. [1,2,3,4,5] 6> [1,2,3,4,5] -- [1,2,3]. [4,5] 7> [2,4,2] -- [2,2]. [4] 8> [2,4,2] -- [2,4,2]. []
erlang使用++和--对列表进行操作。不过诡异的是:
9> [1,2,3] -- [1,2] -- [3]. [3] 10> [1,2,3] -- [1,2] -- [2]. [2,3]
尼妹完全看不懂了啊!原来erlang的++和--运算符都是从右开始的,先计算后面的。
列表还有其他操作。我们下一篇来看!
相关推荐
通过《ets数据结构总结1.txt》和《ets数据结构总结2-Mnesia.txt》,你可以深入了解ETS的各类数据结构及其在连接外部数据库(如《ets数据结构总结3-连接外部数据库.txt》中提到的MySQL)时的应用场景和策略。...
它的动态类型系统和强大的类型推断让代码更加灵活。 Simon St. Laurent的《Introducing Erlang》这本书深入浅出地介绍了这些概念,是学习Erlang的理想起点。通过阅读这本书,读者将能够理解Erlang如何处理并发、...
3. **Erlang数据类型和API**:介绍CNode API,包括如何在C中表示和操作Erlang的数据类型(如整数、原子、列表等),以及如何调用Erlang函数和处理返回结果。 4. **进程通信**:阐述如何在CNode中创建Erlang进程,...
- **Erlang的数据类型**:包括原子(atom)、整数、浮点数、字符串、列表、元组、位串等。 - **Pattern Matching**:Erlang的匹配操作符`=`允许在函数调用、case语句和receive语句中进行模式匹配。 熟悉这些概念和...
1. **Erlang语法**:涵盖基本的变量、数据类型(如原子、列表、元组和二进制)、控制结构(如case表达式和if语句)以及函数定义。 2. **函数式编程概念**:Erlang是纯函数式语言,书中可能会介绍函数式编程的基本...
Erlang是一种动态类型语言,类型检查在运行时进行,这意味着你不需要在代码中声明变量的数据类型。不过,理解Erlang的类型系统对于编写高效且可维护的代码至关重要。 递归在Erlang程序设计中占有重要地位,因为...
### Erlang Binary与Bit String 数据类型详解 #### 引言 Erlang 是一种功能强大且灵活的编程语言,尤其适合开发高并发、分布式及容错性应用。自 R12B 版本以来,Erlang 在处理二进制数据方面引入了两项重大更新:...
编程+Erlang.pdf可能会详细介绍Erlang的基础语法、数据类型、过程和模块等概念。 2. **并发编程**:Erlang的并发模型是其独特之处。它通过轻量级进程(Lightweight Processes, LWP)实现并发,进程间通信(Inter-...
在Erlang中,Record提供了一种方便的方式来定义和访问具有固定字段的数据类型。 在Erlang中,Records是由一个特殊的语法创建的,形如`#record_name{field1 = value1, field2 = value2, ...}`。Record_name是记录的...
其数据类型包括原子(atom)、整数、浮点数、字符串、列表和二进制数据。Erlang使用模式匹配来解构数据结构,并通过消息传递实现进程间的通信。 学习Erlang的关键概念包括: - **模式匹配**:在函数定义中,可以...
4. **动态类型**:Erlang采用动态类型,允许快速开发和迭代,但同时也可能导致运行时错误。 5. **函数式编程**:Erlang是函数式的,强调无副作用的纯函数,以及数据不可变性,这有助于编写简洁、易于理解和测试的...
**动态类型**:Erlang是动态类型的,变量的类型在运行时确定,提供了灵活性。 **及早求值或严格求值**:Erlang的求值策略是及早求值,意味着表达式一旦被引用就会计算其值。 **脚本语言**:Erlang也可作为脚本语言...
(494页带目录的高清扫描版) 这是一本讲解Erlang编程语言的入门指南,内容通俗...内容涉及模块、函数、类型、递归、错误和异常、常用数据结构、并行编程、多处理、OTP、事件处理,以及所有Erlang的重要特性和强大功能。
Erlang支持多种内置数据类型,包括整数、浮点数、原子、列表、元组等。每种数据类型都有其特定用途,例如列表常用于函数式编程中的数据操作,而元组则用于表示固定大小的数据结构。 **1.3 模式匹配** 模式匹配是...
- **编码与解码的类型匹配**:确保 Erlang 数据结构与 JSON 数据类型之间的正确映射。 - **错误处理**:当解码过程中遇到无效 JSON 或编码时出现数据不兼容,需要捕获并处理相应的异常。 - **性能调优**:对于大规模...
5. 朴素的数据类型:Erlang的动态类型系统包含原子(atom)、整数、浮点数、列表、二进制等,简单且易于理解。 Erlang在18.1版本中可能引入了一些新特性、改进和修复。例如,可能对性能进行了优化,增加了新的...
“Erlang中文基础教程”这部分内容可能包括了Erlang的基础语法、数据类型、控制结构、函数定义、过程创建与通信等方面。对于初学者来说,理解这些基本元素至关重要。例如,Erlang的数据类型包括原子(atom)、整数、...
8. 数据类型与模式匹配:Erlang具有丰富的数据类型,如原子、列表、元组等,以及强大的模式匹配功能。源码中可以看到如何利用这些特性编写简洁且高效的代码。 9. 面向连接的网络编程:Erlang的inet模块提供了一套...
- **Erlang基础**:包括基本语法、数据类型、函数定义、模式匹配、过程和模块等。 - **并发编程**:介绍Erlang的进程、消息传递、同步和通信机制,以及如何利用这些特性实现并发。 - **分布式Erlang**:讲解如何在...
首先,书中会介绍Erlang的简单数据类型,如原子(atom)、整数、浮点数、字符串和列表,以及如何进行基本的运算和比较。然后,读者将学习到Erlang的函数式编程思想,包括函数定义、模式匹配、匿名函数(也称为闭包)...