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

erlang的数据类型 (1)

 
阅读更多

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的++和--运算符都是从右开始的,先计算后面的。

 

列表还有其他操作。我们下一篇来看!

 

 

 

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趣学指南

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

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

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

    erlang programming

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

    <27>erlang record

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

    erlang压缩包.rar

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

    erlang23.2版windows64位.zip

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

    windows下安装Erlang环境

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

    Erlang趣学指南

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

    Concurrent Programming in ERLANG (P1-90)

    Erlang支持多种内置数据类型,包括整数、浮点数、原子、列表、元组等。每种数据类型都有其特定用途,例如列表常用于函数式编程中的数据操作,而元组则用于表示固定大小的数据结构。 **1.3 模式匹配** 模式匹配是...

    erlang jiffy code

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

    erlang win64_18.1

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

    Erlang资料大全

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

    programming erlang src code

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

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

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

    Programming Erlang

    首先,书中会介绍Erlang的简单数据类型,如原子(atom)、整数、浮点数、字符串和列表,以及如何进行基本的运算和比较。然后,读者将学习到Erlang的函数式编程思想,包括函数定义、模式匹配、匿名函数(也称为闭包)...

Global site tag (gtag.js) - Google Analytics