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

Erlang学习笔记(一)

阅读更多

 

云计算应该所具备的特质如下:

1.         高负载

2.         正常运转

3.         容错性

4.         分布式

5.         容易伸缩

Erlang(读音:['ə:læŋ]厄兰,中文意思为:占线小时(话务负载单位))正是由于它属于开放的电信业务平台,也就不难理解它的意义了。几乎完全具备以上特质,而且它也是典型的函数式语言。和我们OOP的思想有着截然不同的概念。在以下的学习过程中主要还是以《Erlang程序设计》这本书作为一个学习的依据。

原子

定义:在Erlang中原子用来表示不同的非数字常量值。这里说白了其实就是一种常量的定义。Erlang中原子是全局有效的,不需要像以前c/c++那样通过宏来定义或者包含文件。在定义原子的时候只需要注意以下一些特点就可以:

1.         一般情况原子是以一串以小写字母开头,后面有数字、字母、下划线、邮件符号(@);

2.         使用单引号引用起来的字符也属于原子,例如’Monday’

3.         一个原子的值就是原子本身;

元组(tuple

定义:首先它是Erlang中具有特质的一个定义,如果说把它和我们java中的一个JavaBean来类比可能稍显类似,书上引用的是c语言数据结构来解说元组的结构,尽管非强浅显能看懂。但是作为一个java程序员我觉得采用自己熟悉的语言结构来对比,学习效果更佳吧(对于记忆有很大帮助)。

比如我们一般对于JavaBean的定义是如下结构:

public class Person {

    private String name;

    private int height;

    private int footSize;

    private String eyeColor;

    // get/set...

}

那在我们引用定义的时候就可以直接:

Person person1=new Person();

person1.setName("yeshucheng");

person1.setHeight(111);

person1.setFootSize(40);

person1.setEyeColor("black");

......

与之相对应的是我们使用Erlang来定义了,对于Erlang的定义就截然和c/c++或者java有着明显不同,相对于更加精炼明了:(这里我直接使用书上说的所谓二元组)

Person={person,{name,yeshucheng},{height,111},{footsize,40},{eyecolor,black}}.

没错,就是这么直截了当的来定义,甚至赋值(严格说Erlang不能这么说,但是为了好记忆可以这么理解)

对于以上的定义这里要说明注意的地方:

1.      定义元组,元组中字段没有名字,通常可以使用一个原子作为元组的第一元素来标明(请注意这里花括号内第一原子都是解释逗号后面一个说明),这个元组所能代表的含义就是上面列出的程序定义了。

2.      创建元组,在声明元组的同时其实已经创建了元组,这个也是Erlang的一大特点之一了。如果不再使用,也随之销毁。Erlang使用的垃圾搜集器去收回没有使用的内存。

如:F={firstName,wan}

L={lastName,andy}

P={person,F,L}//这里就应对我们第一条说明的一样第一个名称表示就是后面所有逗号的整体列举,如果在Erlang环境中对于上面写完后,直接敲回车(语句结束后存在”.”这里稍微注意下)就会得到以下结果,正好印证我们所说明这这个问题了

=={persong,{firstName,wan},{lastName,andy}}.

如果在创建过程中存在一个未定义的变量,则程序编译就会产生错误。

3.      提取元组的字段值,刚才我们在程序中有定义一个Person的元组而且也设置值了,现在如果我们想得到或者说提取我们的值,那需要如何而做呢?首先我们采用基本的元组方式来试着看看如下:

1>    Point={point,10,45}.

2>    {point,X,Y}=Point.

3>    X.

10

4>    Y.

45

注明:这里又再次强调下point逗号后面的都是为他而说明的。

1>Person={person,{name,yeshucheng},{height,111},{footsize,40},{eyecolor,black}}.

2>{_,{_,Who},{_,_},{_,_},{_,_}}=Person.

3>Who.

yeshucheng

说明下,如果上面想得到的是值,那么位置响应对号入座然后Who换成What就成(我开始也犯错误,编译立马出错,后来想想用过一个What试试,果然正确,呵呵)。

列表

定义:列表第一个元素称为列表的头(head,后部分称为列表尾(tail),一般[H|T]来标示列表了。

注:列表的头可以是任何东西,但是列表的尾通常还是一个列表。

至于具体的细节问题还是需要找找相关文档看下为好,它的概念牵涉到后面的非常多的定义了。

分享到:
评论

相关推荐

    erlang 学习笔记1

    【描述】虽然描述中没有具体的信息,但我们可以假设这是一个博主分享的关于Erlang学习的初步笔记,可能涵盖了基本语法、并发模型以及一些实用工具的使用。 【标签】"源码"和"工具"提示我们,这篇笔记可能包括了...

    erlang学习笔记

    ### Erlang学习笔记:深入解析Erlang编程与系统管理 #### 1. Erlang编程基础与资源 在深入探讨Erlang编程之前,我们首先需要了解一些基础资源和学习资料。Erlang官方网站([www.erlang.org](http://www.erlang.org...

    Scala、Groovy++、Stackless Python、Erlang 学习笔记及分享

    Erlang是一种为构建大规模并发系统而设计的函数式编程语言。它的核心特性包括轻量级进程(processes)、消息传递和故障隔离。Erlang以其容错性和高可用性著称,广泛应用于电信、分布式系统和实时计算领域。 压缩包...

    Redis全套学习笔记 (带章节目录) 完整版pdf

    本文是一篇关于Redis全套学习笔记的文章,主要介绍了Redis的基础知识、数据结构、持久化、集群、高可用、性能优化等方面的内容。通过本文的学习,读者可以全面掌握Redis的使用和应用,提高自己的技术水平和实践能力...

    java版商城源码-hello-erlang:Erlang的笔记和例子

    这些是我在学习过程中关于 Erlang 的笔记和主要引用。 检查部分以查看我从哪里获取报价。 请注意,此 repo 始终在进行中。 (我还没找到时间完成这本书。) 话题 陷阱 erlang 没有null值这样的东西 每个函数都需要...

    rabbitmq学习笔记和软件和插件

    **RabbitMQ学习笔记与软件插件详解** RabbitMQ是一种广泛应用的消息中间件,它基于AMQP(Advanced Message Queuing Protocol)协议,提供可靠的消息传递服务。在分布式系统中,RabbitMQ扮演着数据交换中心的角色,...

    Redis全套学习笔记(带章节目录)完整版pdf最新版本

    本文是一篇关于Redis全套学习笔记的文章,主要介绍了Redis的基础知识、数据结构、持久化、集群、高可用、性能优化等方面的内容。通过本文的学习,读者可以全面掌握Redis的使用和应用,提高自己的技术水平和实践能力...

    rabbitmq学习笔记.zip

    在这个“rabbitmq学习笔记.zip”压缩包中,我们可以期待找到一系列关于RabbitMQ的核心概念、安装教程、使用方法以及常见问题的详细说明。 首先,RabbitMQ的基本概念包括生产者(Producer)、消费者(Consumer)、...

    RabbitMq学习笔记1

    在本篇学习笔记中,我们将首先了解RabbitMQ的安装过程。 1. **Erlang的安装**: Erlang是RabbitMQ的基础,因为RabbitMQ是用Erlang编写的。安装Erlang可以通过以下命令完成: ```bash sudo apt-get install ...

    Erlang程序设计(第2版)读书笔记:Erlang安装和基础语法

    Erlang程序设计的书籍是学习这门语言的重要资源。《Erlang程序设计(第2版)》便是一本面向初学者的经典教材,提供了丰富的基础知识和深入的讨论,对理解和掌握Erlang语言有极大帮助。 对于Erlang的安装,目前有...

    XMPP学习入门笔记

    本篇学习笔记汇总了XMPP的基本概念以及多种编程语言下的客户端库介绍,旨在帮助读者快速了解并上手XMPP技术。XMPP作为一种强大的即时通讯协议,不仅具备高度的可扩展性,还支持多种编程语言。这使得开发者可以根据...

    redis 的学习笔记A

    Redis 是一个高性能的键值存储系统,常被用于构建数据缓存、消息队列以及数据库。作为NoSQL数据库的一种,Redis具有丰富的数据结构支持,包括字符串(strings)、列表(lists)、集合(sets)、有序集合(sorted ...

    RabbitMQ学习 笔记

    ### RabbitMQ 学习笔记知识点总结 #### 一、RabbitMQ 历史与背景 RabbitMQ 是一个基于 AMQP(高级消息队列协议)的开源消息中间件,由 Erlang 语言编写而成。AMQP 的出现填补了异步消息处理领域的标准化空白,特别...

    RabbittMQ软件,资料及笔记

    这个“RabbittMQ软件,资料及笔记”压缩包可能包含了一系列关于RabbitMQ的学习资源,包括文档、教程、笔记等,旨在帮助用户深入理解和熟练掌握这一强大的中间件。 首先,让我们来了解一下RabbitMQ的核心概念和功能...

    狂神说Redis笔记完整版PDF最新版本

    Redis(Remote Dictionary Server ),即远程字典...《狂神说Redis笔记》主要是狂神说发的笔记,通俗易懂,从入门到主从和实践,对Redis有一个很好的学习,通过本教程你可以一步一步了解 Redis 的应用,感兴趣的可以下载

    RabbitMQ学习讲义

    【RabbitMQ学习讲义】 RabbitMQ是一个开源的消息队列系统,它基于高级消息队列协议(AMQP)实现,旨在提供可靠的、跨平台的消息传递。AMQP是一种应用程序层的开放标准,允许不同的系统、语言和应用之间进行无缝的...

    ericssonaxel.github.io:evm.com

    【描述】"帖子" 提示我们这个项目可能包含了一系列的文章或博客帖子,这些帖子可能涵盖了Erlang语言的学习笔记、EVM的内部工作原理、如何使用Erlang进行并发编程、Erlang在分布式系统中的应用,以及与SCSS(Sassy ...

    RabbitMQ自学笔记

    综上所述,通过本篇笔记的学习,读者可以全面掌握RabbitMQ的基本使用方法以及一些高级特性,这对于实际项目中的消息处理需求提供了强有力的支持。无论是简单的消息传输还是复杂的分布式系统架构设计,RabbitMQ都能...

    rabbitmq笔记及面试要点

    RabbitMQ作为一款广泛应用的消息中间件,它的核心价值在于实现消息队列的功能,有效地处理系统中的高并发和异步任务,从而提高系统的稳定性和响应速度。本文将详细探讨RabbitMQ的基本概念、工作机制以及面试中常见的...

    compsci390-plp

    "compsci390-plp" 是一个与计算机科学390课程相关的压缩包,主要涉及编程语言范例的学习。这门课程可能涵盖了多种编程语言的理论、设计和实现,旨在让学生深入理解编程语言的原理及其应用。课程的重点可能包括了如何...

Global site tag (gtag.js) - Google Analytics