Erlang中的模块与模式匹配介绍_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-09-11 21:42:39

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

Erlang中的注册进程使用实例_Erlang

之前看到 Erlang 中的注册进程时,对注册并不理解,主要是不理解注册的原子的作用域.刚才突然想明白了: 复制代码 代码如下: 注册进程关联的原子具有全局作用域 也就是说关联了注册进程之后的原子可以全局被使用 Erlang 中的并发机制是通过消息邮箱实现的,进程间进行通讯的方式只有消息邮箱,而进程间通讯需要知道进程的进程号,而使用 spawn 产生新进程时会返回新进程的进程号供使用. 一个最简单的进程间通信的程序如下 复制代码 代码如下: -module(test). start() ->  

Erlang中的socket编程简单例子_Erlang

Erlang 中gen_tcp 用于编写TCP程序,gen_udp用于编写UDP程序.一个简单的TCP服务器echo示例: 复制代码 代码如下: Start_echo_server()->          {ok,Listen}= gen_tcp:listen(1234,[binary,{packet,4},{reuseaddr,true},{active,true}]),          {ok,socket}=get_tcp:accept(Listen),          gen_tc

Erlang中的映射组Map详细介绍_Erlang

主要是遇到 Map匹配的问题,所以顺便回忆一下 Erlang 中的映射组 Map,在其它语言中被称作 Hash 哈希或者 Dict 字典. Erlang 从 R17 版本开始支持映射组 创建映射组 Erlang 中的映射组用结构 #{} 表示,创建一个映射组可以这样 复制代码 代码如下: % 不管你怎么排序,最终结果都是按键的字典顺序排列的 #{ name => "wittyfox", age => 19 }. % => #{age => 20,name =&g

Erlang中的函数与流程控制介绍_Erlang

一:函数 1:在Erlang中,[名字相同但参数数目不同]的两个函数是完全不同的函数. 2:其他模块内的函数用完全限定名称 被调用: 复制代码 代码如下: -module(sort1). -export([reverse_sort/1, sort/1]). reverse_sort(L) ->         lists1:reverse(sort(L)). sort(L) ->         lists:sort(L). 3:子句间以分号[;]分隔,在最后的结尾处以[.]结尾. 4:每个函

Erlang并发编程介绍_Erlang

Erlang中的process--进程是轻量级的,并且进程间无共享.查了很多资料,似乎没人说清楚轻量级进程算是什么概念,继续查找中...闲话不提,进入并发编程的世界.本文算是学习笔记,也可以说是<Concurrent Programming in ERLANG>第五张的简略翻译. 1.进程的创建     进程是一种自包含的.分隔的计算单元,并与其他进程并发运行在系统中,在进程间并没有一个继承体系,当然,应用开发者可以设计这样一个继承体系.     进程的创建使用如下语法: 复制代码 代码如下:

Erlang中的基本元素操作小结_Erlang

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

介绍Ruby中的模块与混合类型的相关知识

  这篇文章主要介绍了Ruby中的模块与混合类型的相关知识,包括平常人们常说的多态与继承等相关知识点,需要的朋友可以参考下 模块是组合在一起的方法,类和常量.模块两个主要好处: 模块提供了一个命名空间,并避免名称冲突. 模块实现混合工厂. 模块定义了一个命名空间,一个沙箱中方法和常量可以自由使用,而不必担心踩到其他的方法和常数. 语法: ? 1 2 3 4 5 module Identifier statement1 statement2 ........... end 就像被命名为类常量模块中

Erlang中的并发程序简介_Erlang

Erlang中基本的并发函数 1)  Pid =spwan(Mod,Func,Args) 创建一个新的进程来执行apply(Mod,Func,Args),与调用进程并列运行,会使用最新的代码定义模块. 2)  Pid!Message 向Pid进程异步发送Message,!为发送操作符 3)  Receive - end 接收消息 复制代码 代码如下:  receive            Pattern1[when Guard1]-> Expression1;            Patte

Erlang中的匹配模式总结_Erlang

一.赋值时匹配 原子匹配 复制代码 代码如下: atom    = atom                        % atom another = another                     % another atom    = another                     % exception error 变量匹配 复制代码 代码如下: Var = 2.                              % 2 Var = 3 - 1.