当前位置: 首页 > 编程笔记 >

Erlang中的模块与模式匹配介绍

房光临
2023-03-14
本文向大家介绍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位,位串里的位序列可直接访问。

 类似资料:
  • 本文向大家介绍Erlang中的匹配模式总结,包括了Erlang中的匹配模式总结的使用技巧和注意事项,需要的朋友参考一下 一、赋值时匹配 原子匹配 变量匹配 元组匹配 列表匹配 参数匹配 记录匹配 比特匹配 二、流程控制中的匹配 if case try catch 消息传递匹配

  • 主要内容:定义模块,模块属性,预先内置属性模块是在一个单一的文件重新组合的函数,在一个单一的名称。此外,在 Erlang 所有函数必须在模块定义。 大部分像算术,逻辑和布尔操作符的基本函数已经 Erlang 内部集成提供并且可以直接调用,因为在运行程序时的默认模块被加载。一个模块中使用定义的所有其他函数需要使用形式 Module:Function (参数) 来调用。 定义模块 有了模块,我们可以声明两个东西:函数和属性。属性就类似它的名称

  • 问题内容: 如何找到具有匹配模式的所有键的计数。 例如,有两个键和。常见的模式是。因此,这里的计数是2。 如何在Redis中做到这一点? 问题答案: 免责声明 我希望这个旧答案不会损坏任何具有数百万把钥匙的生产系统。如果出于某种原因仍要在生产中仍然计算redis的匹配键,最好使用具有匹配模式的scan。 如果仅使用KEYS进行搜索,并使用Redis客户端,您将获得所有匹配密钥的数字列表,对吗? 例

  • 模式,是Rust另一个强大的特性。它可以被用在let和match表达式里面。相信大家应该还记得我们在复合类型中提到的关于在let表达式中解构元组的例子,实际上这就是一个模式。 let tup = (0u8, 1u8); let (x, y) = tup; 而且我们需要知道的是,如果一个模式中出现了和当前作用域中已存在的同名的绑定,那么它会覆盖掉外部的绑定。比如: let x = 1; let c

  • 一、模式匹配 Scala 支持模式匹配机制,可以代替 swith 语句、执行类型检查、以及支持析构表达式等。 1.1 更好的swith Scala 不支持 swith,可以使用模式匹配 match...case 语法代替。但是 match 语句与 Java 中的 switch 有以下三点不同: Scala 中的 case 语句支持任何类型;而 Java 中 case 语句仅支持整型、枚举和字符串常