前面一篇high level地介绍了Erlang语言在并发编程上的特点。本文详细介绍Erlang的基本语法:
在Erlang语法中,跟java或c有相当大的差异,跟以往我学过的任何语言(c,pasacal,vb,delphi,php,groovy,python)有巨大的不同,前面的语言要么是基于过程的,或者基于面向对象的,而Erlang是面向消息的或者说是基于函数的。
在语法要素方面,变量有两种状态,要么绑定(已赋值),要么未绑定,一旦被赋值,就不能再赋值,任何变量都可以看成是不可变的,有点像java中的final变量。
变量类型:
1.整型, 比如 1,2,3
2.浮点型, 比如 1.0,3.0e12
3.字符串,严格意义讲是整型变量的list。"abc" 和 [97,98,99]一样
4.原子(atoms),就像字面量,由小写字母开头的字符组成,也可以用单引号扩住,以便于定义以大写字母开头的字符列表,有点像java中枚举类型,c中的常量,他们是全局有效的,比如abc, color,name,red等等
5.元组(tuple),像c的struct,像java的纯值对象,像js对象(或者json对象),他是由基本的整型,浮点型,原子,项,及元组和列表等类型组成的附和类型。不要和python中的tuple混淆,他们之间完全不一样。
6.列表(List),就像java中LinkedList或python中的list,大小可变的,列表由两部分组成头和尾,[H|T],H是列表头,T代表列表尾,列表尾要求是一个列表。列表的定义是用[]形式表示。
7.引用(reference),和java,C++及大多数面向对象语言中的引用是一样的,比如,X={1,3},Y=X,X和Y都是只向相同的数据,变没有拷贝一份出来。
8. 匿名变量,匿名变量用“_”表示,主要用在赋值中剔除想用的值,比如 {x,_,Y}={1,3,5},可以只取元组中的第一个值和第3个值并赋值给x,y
我们可以看出来,上面这些类型都是跟数据相关的,我们的消息都应该由这些数据类型组成。
9.二进制(binarry),一个二进制数是一个字节序列。二进制数为二进制数据的存贮提供了一种高空间效率的方法
10.pid,我们知道,Erlang语言的特点是要基于进程的,进程之间的通信是基于消息的,要发消息必须知道对方的进程id
11.端口(port),端口用于与外界通信,由内置函数(BIF3)open_port来创建。消息可以通过端口进行收发,但是这些消息必须遵守所谓“端口协议” (port protocol)的规则
12. 匿名函数(fun)——匿名函数是函数闭包4,由表达式“fun(…) -> … end.”来创建
变量赋值(模式匹配 Pattern Matching):
严格意义或者官方资料上,没有赋值的说法,只是模式匹配的提法很容易与正则表达式容易混在一起,而实际上用赋值的方式理解这种模式匹配还是容易理解的。比如{X,Y}={1,3},变量X被赋值为1,Y被赋值为3,但是,如果X或者Y任何一个变量已经赋过值都会抛错。
模式匹配涉及两个概念:Pattern 和 Term
pattern可以看成是各种类型变量,而Term可以看成是一个都已经赋值过的变量或常量组成,进行模式匹配相当于python中的元组赋值。
以下是模式匹配的例子:
Pattern Term Result
{X,abc} {123,abc} 成功 X → 123
{X,Y,Z} {222,def,"cat"} 成功 X → 222, Y → def,Z → "cat"
{X,Y} {333,ghi,"cat"} 失败—the tuples have different shapes
X true 成功 X → true
{X,Y,X} {{abc,12},42,{abc,12}} 成功 X → {abc,12}, Y → 42
{X,Y,X} {{abc,12},42,true} 失败—X cannot be both {abc,12} and true
[H|T] [1,2,3,4,5] 成功 H → 1, T → [2,3,4,5]
[H|T] "cat" 成功 H → 99, T → "at"
[A,B,C|T] [a,b,c,d,e,f] 成功 A → a, B → b,C → c, T → [d,e,f]
分享到:
相关推荐
1. **Erlang语言基础**:Erlang是瑞典电信设备制造商Ericsson为解决实时通信系统需求而开发的。它采用函数式编程范式,强调纯函数和不可变数据,以及模式匹配和递归等特性。编程+Erlang.pdf可能会详细介绍Erlang的...
2. **Erlang语言基础**:Erlang作为一种功能强大的编程语言,其基础知识是掌握整个平台的关键。这可能包括Erlang的核心特性,如轻量级进程、消息传递、模式匹配和函数式编程范式。 3. **TCP-based RPC service**:...
顺序编程是 Erlang 编程语言的基础,用户可以使用 Erlang Shell 编写和运行顺序编程代码。顺序编程是指按照顺序执行的编程方式,用户可以使用各种运算符号和函数来实现不同的计算任务。 3. 模块和函数 模块和函数...
- **Erlang语言基础**: 至少熟悉Erlang的基础语法和编程思想。 - **Web开发基础**: 了解HTTP协议的工作原理,熟悉JSON数据格式。 - **项目管理能力**: 能够合理规划项目进度,具备良好的文档编写习惯。 通过以上...
1. **Erlang语言基础** Erlang是一种动态类型的并发编程语言,源于瑞典电信设备制造商Ericsson的需求,旨在创建高效、可靠和可维护的软件。它支持轻量级进程(process)、消息传递以及热代码升级,这使得Erlang特别...
1. **Erlang语言基础**:Erlang是一种函数式编程语言,以其并发和分布式特性著名,特别适合处理大规模的并发连接。了解Erlang的基本语法、模式匹配、进程(process)模型以及错误处理是必要的。 2. **Ranch库**:...
这展示了Erlang语言强大的计算能力。 当需要退出Erlang Shell时,可以通过两种方式实现:一是使用`Ctrl+C`组合键,系统会暂停并询问用户下一步操作;二是直接输入`halt().`,这是一种更为优雅的退出方式,它会直接...
Erlang语言基础 Erlang语言以其独特的语法和特性而闻名,包括: - **函数式编程**:Erlang是纯函数式语言,强调无副作用的函数调用和不可变数据。 - **并发处理**:Erlang通过轻量级进程(processes)实现并发,...
1. **Erlang语言基础**:源码中会包含Erlang的基本语法,如模块(module)、函数(function)、过程(process)和模式匹配(pattern matching)等。通过阅读源码,你可以了解到如何组织Erlang代码,以及如何定义和...
在《Erlang编程指南》这本书中,作者Francesco Cesarini和Simon Thompson深入浅出地介绍了Erlang语言的基础和高级特性,涵盖了从进程通信到并发设计模式,再到OTP框架的使用。通过学习这本书,读者可以全面理解...
这是一本讲解Erlang编程语言的入门指南,内容通俗易懂,插图生动幽默,示例短小清晰,结构安排合理。书中从Erlang的基础知识讲起,融汇所有的基本概念和语法。 这是一本讲解Erlang编程语言的入门指南,内容通俗易懂...
Erlang是一种高级编程语言,特别适用于并发、分布式和实时系统。它由瑞典电信设备制造商Ericsson开发,用于构建大规模、高可用性的电信系统。在本文中,我们将深入探讨如何在 CentOS 7 64位操作系统上安装和配置...
而《Erlang程序设计》则注重基础,确保读者扎实掌握语言基础。通过阅读这两本书,你可以系统地学习Erlang的理论知识,并获得实际操作经验,从而在构建高并发、分布式系统时游刃有余。 Erlang的独特之处在于其对并发...
在Linux系统中,Erlang是一种强大的编程语言和并发平台,尤其在分布式计算、实时系统以及高可用性软件开发领域有着广泛的应用。对于那些没有网络连接或者网络环境不稳定的情况,离线安装Erlang就显得尤为重要。在...
Erlang语言的特性包括: - 并发性:支持大量并发线程,无需操作系统的并发机制支持。 - 分布式:Erlang系统由多个节点组成网络,每个处理器通常被看做一个节点。 - 健壮性:具有基本错误检测能力,可构建容错系统。 ...