Erlang中的模块与模式匹配

模块是Erlang的基本代码单元,erl文件编译后以.beam作为扩展名,采用UTF8字符集,.erl文件示意如下:

-module(模块名,与存放模块的文件名相同)

-export([方法名/输入参数的个数])

Method1( {a,b,c})->a*b*c;

Mehtod2({d,e})->d-e.

模块属性有两种类型:预定义型和用户定义型。

Erlang中用于代表函数的数据类型被称为fun,相当于python中的lambda,一般用于

1)      对列表里的每个元素执行相同的操作

2)      创建自己的控制

3)      实现可重入解析代码,解析组合器或者lazy evaluator

模式匹配是erlang的根基,case和if表达式使erlang小而一致。

case Expression  of

Pattern1[ when Guard1] -> Expr-seq1;

Pattern2[when Guard2]-> Expr-seq2;

end

if

Guard1-> Expr_seq1;

Guard2-> Expr_seq2;

end

erlang有两种方法来捕捉异常错误,一种是把抛出异常的调用函数封装在一个try_catch 表达式里,提供了概括信息,另一种是把调用封装在一个catch表达式里,提供了详细的栈跟踪信息。在捕捉到一个异常后,可以调erlang:get_stacktrace()来找到最近的栈信息。

把二进制型,位串,和位级模式匹配引入erlang是为了简化网络编程。二进制型是置于双小于号和双大于号之间的一列整数或字符串。例如: 1> Mybin1 =  << “ILOVE YOU”>>

Term_to_bingary(Term) ->Bin 转换为二进制型

Binary_to_Term(Bin) ->Term 二进制型转换为Erlang的数据类型

精心选择宏的名称和Erlang代码布局,能最大限度地缩小C和Erlang的语义鸿沟。在Erlang里,最小的寻址单元是1位,位串里的位序列可直接访问。

时间: 2024-10-28 08:44:02

Erlang中的模块与模式匹配的相关文章

erlang中pg2模块使用

pg2这个模块实现了进程组的功能.这个模块之前有个模块为pg,pg模块的进行组中消息将被发送到组内的每个进程,但是pg2却不同,它可以选择性地将消息发送给单个.某些或全部组内成员.通过进程组的名称可以访问组内的进程,例如进程组的名称为foobar,而且有一系列进程位于组内,可能这些进程位于不同的节点上,都可以成为foobar的成员.不能够直接向foobar发送消息,但是通过方法get_members/1 和 get_local_members/1获取的组内的进程,然后可以与查出的进程通信. 下面

Erlang中的基本元素操作

Erlang shell中,用句号加空格.tab或回车来结束表达式,%表示注释的起点,;隔离子句.模块是.erl 文件,库的头文件.hrl, shell中的编译时c(),外编译命令时erlc, 退出shell用q(),或erlang:halt(). 变量以大写字母开头,且不能重新绑定变量,只能一次性赋值,具有不可变状态. 原子是全局的,不需要宏定义或包含文件,以小写字母开头,还可放在单引号内,是极简表达式. 元组tuple是一些数量固定的项目归组成单一实体{,}, 由于是匿名的,通常在第一个元素

erlang中字符编码转换(转)

转自:http://www.thinksaas.cn/group/topic/244329/ 功能说明: erlang中对各种语言的编码支持不足,此代码是使用erlang驱动了著名的iconv编码库来对字符进行编码转换处理. 文件说明: iconv_erl.c和iconv.h 是erlang字符编码模块的driver,作用是对iconv进行封装.编译后生成iconv_erl.dll,供iconv.erl使用. iconv_makefile.win32 windows上编译iconv_erl.dl

Erlang中一些错误或者异常的标识

erlang中错误大体分为四种: 1. 编译错误    2. 逻辑错误    3. 运行时错误    4. 用户代码生成的错误 编译错误,主要是编译器检测出的代码语法错误 逻辑错误,是指程序没有完成预期的工作,属于开发人员的问题 运行时错误,是指erlang运行时抛出的错误,比如对非数据类型执行算术运算,erlang运行时会捕获异常,并抛出.在erlang中,这类异常的类型为error 用户自定义错误,是指通过exit/1或者throw/1生成 我们把运行时错误以及用户抛出的错误称为异常(exc

Erlang中的record与宏

http://www.cnblogs.com/me-sa/archive/2011/07/20/erlang0006.html 在Erlang中使用Tuple ,数据项的顺序\数量都是确定的,一旦数据项顺序调整或者增减字段,都容易出现badmatch. 同时一些常量如果硬编码到代码中,一旦数值变化,要想全部可靠的替换成新的数值是一个困难的事情. 这两种数据层面的变化,在Erlang中对应的解决方案是: record  Macro record   在代码中我们创建一个record:   -rec

[erlang 001]erlang中的错误及异常处理

一. erlang中的错误 1. 分类     1) 编译错误:主要是编译器检测出的代码语法错误:     2) 逻辑错误:是指程序没有完成预期的工作,属于开发人员的问题:     3) 运行时错误:是指erlang运行时抛出的错误,比如对非数据类型执行算术运算,erlang运行时会捕获异常,并抛出.在erlang中,这类异常的类型为error:     4) 用户代码生成的错误:是指通过exit/1或者throw/1生成. 2. 异常 我们把运行时错误以及用户抛出的错误称为异常(excepti

Node.js中的模块机制

本文为读书笔记. 一.CommonJS的模块规范 Node与浏览器以及 W3C组织.CommonJS组织.ECMAScript之间的关系 Node借鉴CommonJS的Modules规范实现了一套模块系统,所以先来看看CommonJS的模块规范. CommonJS对模块的定义十分简单,主要分为模块引用.模块定义和模块标识3个部分. 1. 模块引用 模块引用的示例代码如下: var math = require('math'); 在CommonJS规范中,存在require()方法,这个方法接受模

Python中time模块详解

在Python中,与时间处理有关的模块就包括:time,datetime以及calendar.这篇文章,主要讲解time模块. 在开始之前,首先要说明这几点: 在Python中,通常有这几种方式来表示时间:1)时间戳 2)格式化的时间字符串 3)元组(struct_time)共九个元素.由于Python的time模块实现主要调用C库,所以各个平台可能有所不同. UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间.在中国为UTC+8.DST

Yii2中的模块、应用程序(Module,Application)

原文地址:http://www.kuitao8.com/20140626/2715.shtml 模块(Module ) 模块是一个功能独立的逻辑单元,每一个模块都可以包含有多个子模块,但每个模块只能有一个对应的父模块(如果有的话).它的定义在yii\base\Module 应用程序(Application) Yii2中的应用程序有两种:web应用程序(yii\web\Application)和控制台应用程序(yii\console\Application).他们都继承于yii\base\Appl