文章标题关闭所有内容预览 | 展开所有内容预览
-
Erlang 宏
[内容预览]
0 | 2019-01-15 16:23:56
由Loen创建,路飞最后一次修改2016-08-12Erlang宏在messager系统添加的另外一种东西是宏。在mess_config.hrl文件中包含如下的定义:%%%Configurethelocationoftheservernode,-define(server_node,messenger@super).这...
[阅读全文]
-
Erlang 记录
[内容预览]
0 | 2019-01-15 16:23:55
由Loen创建,路飞最后一次修改2016-08-12Erlang记录记录的定义如下:-record(name_of_record,{field_name1,field_name2,field_name3,......}).例如,-record(message_to,{to_name,message}).这等价于:{me...
[阅读全文]
-
Erlang 头文件
[内容预览]
0 | 2019-01-15 16:23:54
由Loen创建,路飞最后一次修改2016-08-12Erlang头文件如上所示,某些文件的扩展名为.hrl。这些是在.erl文件中会用到的头文件,使用方法如下:-include("File_Name").例如:-include("mess_interface.hrl").在本例中,上面所有的文件与messager系统的...
[阅读全文]
-
Erlang 将大程序分在多个文件中
[内容预览]
0 | 2019-01-15 16:23:52
由Loen创建,路飞最后一次修改2016-08-12将大程序分在多个文件中为了演示需要,我们将前面几节中messager程序分布到五个文件中:mess_config.hrl配置所需数据头文件mess_interface.hrl客户端与messager之间的接口定义user_interface.erl用户接口函数mess...
[阅读全文]
-
Erlang 记录与宏
[内容预览]
0 | 2019-01-15 16:23:51
由Loen创建,路飞最后一次修改2016-08-12
[阅读全文]
-
Erlang 增加健壮性后的完整示例
[内容预览]
0 | 2019-01-15 16:23:50
由Loen创建,路飞最后一次修改2016-08-12增加健壮性后的完整示例让我们改进Messager程序以增加该程序的健壮性:%%%Messagepassingutility.%%%Userinterface:%%%login(Name)%%%OneuseratatimecanloginfromeachErlangno...
[阅读全文]
-
Erlang 错误处理
[内容预览]
0 | 2019-01-15 16:23:49
由Loen创建,路飞最后一次修改2016-08-12Erlang错误处理在讨论监督与错误处理细节之前,让我们先一起来看一下Erlang进程的终止过程,或者说Erlang的术语exit。进程执行exit(normal)结束或者运行完所有的代码而结束都被认为是进程的正常(normal)终止。进程因为触发运行时错误(例如,除...
[阅读全文]
-
Erlang 超时处理
[内容预览]
0 | 2019-01-15 16:23:48
由Loen创建,路飞最后一次修改2016-08-12Erlang超时处理在改进messager程序之前,让我们一起学习一些基本的原则。回忆一下,当“ping”结束的时候,它向“pong”发送一个原子值finished的消息以通知“pong”结束程序。另一种让“pong”结束的办法是当“pong”有一定时间没有收到来自“...
[阅读全文]
-
Erlang 健壮性
[内容预览]
0 | 2019-01-15 16:23:47
由Loen创建,路飞最后一次修改2016-08-12Erlang的健壮性上一节中的完整示例还存在一些问题。当用户所登录的结点崩溃时,用户没有从系统中登出,因此该用户仍然在服务器的User_List中,但事实是用户已经不在系统中了。这会导致这用户不能再次登录,因为系统认为它已经在系统中了。或者,如果服务器发送消息出现故障...
[阅读全文]
-
Erlang 分布式编程
[内容预览]
0 | 2019-01-15 16:23:45
由Loen创建,路飞最后一次修改2016-08-12Erlang分布式编程下面我们进一步对pingpong示例程序进行改进。这一次,我们要让“ping”、“pong”进程分别位于不同的计算机上。要想让这个程序工作,你首先的搭建一下分布式的系统环境。分布式Erlang系统的实现提供了基本的安全机制,它阻止未授权的外部设备...
[阅读全文]
-
Erlang 注册进程名称
[内容预览]
0 | 2019-01-15 16:23:43
由Loen创建,路飞最后一次修改2016-08-12Erlang注册进程名称上面的例子中,因为“Pong”在“ping”进程开始前已经创建完成,所以才能将“pong”进程的进程标识符作为参数传递给进程“ping”。这也就说,“ping”进程必须通过某种途径获得“pong”进程的进程标识符后才能将消息发送“pong”进程...
[阅读全文]
-
Erlang 消息传递
[内容预览]
0 | 2019-01-15 16:23:42
由Loen创建,路飞最后一次修改2016-08-12Erlang消息传递下面的例子中创建了两个进程,它们相互之间会发送多个消息。-module(tut15).-export([start/0,ping/2,pong/0]).ping(0,Pong_PID)->Pong_PID!finished,io:format("p...
[阅读全文]
-
Erlang 进程
[内容预览]
0 | 2019-01-15 16:23:41
由Loen创建,路飞最后一次修改2016-08-12Erlang进程管理相比于其它函数式编程语言,Erlang的优势在于它的并发程序设计与分布式程序设计。并发是指一个程序中同时有多个线程在执行。例如,现代操作系统允许你同时使用文字处理、电子制表软件、邮件终端和打印任务。在任意一个时刻,系统中每个处理单元(CPU)都只有...
[阅读全文]
-
Erlang 并发编程
[内容预览]
0 | 2019-01-15 16:23:40
由Loen创建,路飞最后一次修改2016-08-12
[阅读全文]
-
Erlang 高阶函数 (Fun)
[内容预览]
0 | 2019-01-15 16:23:39
由Loen创建,路飞最后一次修改2016-08-12Erlang高阶函数(Fun)Erlang作为函数式编程语言自然拥有高阶函数。在shell中,我们可以这样使用:86>Xf=fun(X)->X*2end.#Fun<erl_eval.5.123085357>87>Xf(5).10这里定义了一个数值翻倍的函数,并将这个函...
[阅读全文]
-
Erlang 内置函数 (BIF)
[内容预览]
0 | 2019-01-15 16:23:38
由Loen创建,路飞最后一次修改2016-08-12Erlang内置函数(BIF)内置函数是指那些出于某种需求而内置到Erlang虚拟机中的函数。内置函数常常实现那些在Erlang中不容易实现或者在Erlang中实现效率不高的函数。某些内置函数也可以只用函数名就调用,因为这些函数是由于默认属于erlang模块。例如,下...
[阅读全文]
-
Erlang if 与 case
[内容预览]
0 | 2019-01-15 16:23:37
由Loen创建,路飞最后一次修改2016-08-12Erlangif与case上面的find_max_and_min函数可以找到温度的最大值与最小值。这儿介绍一个新的结构if。If的语法格式如下:ifCondition1->Action1;Condition2->Action2;Condition3->Action3;...
[阅读全文]
-
Erlang 列表的操作
[内容预览]
0 | 2019-01-15 16:23:36
由Loen创建,路飞最后一次修改2016-08-12Erlang更多关于列表的内容|操作符可以用于取列表中的首元素:47>[M1|T1]=[paris,london,rome].[paris,london,rome]48>M1.paris49>T1.[london,rome]同时,|操作符也可以用于在列表首部添加元素:...
[阅读全文]
-
Erlang 匹配、Guards 与变量的作用域
[内容预览]
0 | 2019-01-15 16:23:34
由Loen创建,路飞最后一次修改2016-08-12Erlang匹配、Guards与变量的作用域在某些场景下,我们可能需要找到最高温度或最低温度。所以查找温度值列表中最大值或最小值是非常有用的。在扩展程序实现该功能之前,让我们先看一下寻找列表中的最大值的方法:-module(tut6).-export([list_ma...
[阅读全文]
-
Erlang 完整示例
[内容预览]
0 | 2019-01-15 16:23:33
由Loen创建,路飞最后一次修改2016-08-12Erlang完整示例接下来,我们会用一个更加完整的例子来巩固前面学到的内容。假设你有一个世界上各个城市的温度值的列表。其中,一部分是以摄氏度表示,另一部分是华氏温度表示的。首先,我们将所有的温度都转换为用摄氏度表示,再将温度数据输出。%%Thismoduleisinf...
[阅读全文]
-
Erlang 输出至终端
[内容预览]
0 | 2019-01-15 16:23:32
由Loen创建,路飞最后一次修改2016-08-12Erlang输出至终端用例子来说明如何格式化输出到终端再好不过了,因此下面就用一个简单的示例程序来说明如何使用io:format函数。与其它导出的函数一样,你可以在shell中测试io:format函数:31>io:format("helloworld~n",[])....
[阅读全文]
-
Erlang 标准模块与使用手册
[内容预览]
0 | 2019-01-15 16:23:31
由Loen创建,路飞最后一次修改2016-08-12Erlang标准模块与使用手册Erlang有大量的标准模块可供使用。例如,IO模块中包含大量处理格式化输入与输出的函数。如果你需要查看标准模块的详细信息,可以在操作系统的shell或者命令行(即开始erl的地方)使用erl-man命令来查看。示例如下:%erl-man...
[阅读全文]
-
Erlang 映射 (Map)
[内容预览]
0 | 2019-01-15 16:23:30
由Loen创建,路飞最后一次修改2016-08-12Erlang映射(Map)映射用于表示键和值的关联关系。这种关联方式是由“#{”与“}”括起来。创建一个字符串"key"到值42的映射的方法如下:1>#{"key"=>42}.#{"key"=>42}让我们直接通过示例来看一些有意思的特性。下面的例子展示了使用映射来关...
[阅读全文]
-
Erlang 列表
[内容预览]
0 | 2019-01-15 16:23:29
由Loen创建,路飞最后一次修改2016-08-12Erlang列表虽然元组可以将数据组成一组,但是我们也需要表示数据列表。Erlang中的列表由方括号括起来表示。例如,世界上不同城市的温度列表就可以表示为:[{moscow,{c,-10}},{cape_town,{f,70}},{stockholm,{c,-4}},...
[阅读全文]
-
Erlang 原子类型
[内容预览]
0 | 2019-01-15 16:23:28
由Loen创建,路飞最后一次修改2016-08-12原子类型原子类型是Erlang语言中另一种数据类型。所有原子类型都以小写字母开头(参见原子类型)。例如,charles,centimeter,inch等。原子类型就是名字而已,没有其它含义。它们与变量不同,变量拥有值,而原子类型没有。将下面的这段程序输入到文件tut2...
[阅读全文]
-
Erlang 模块与函数
[内容预览]
0 | 2019-01-15 16:23:27
由Loen创建,路飞最后一次修改2016-08-12模块与函数如果一种编程语言只能通过shell来运行代码,那么这种语言基本上没什么太大的用处,Erlang同样可以通过脚本来运行程序。这里有一小段Erlang程序。使用合适的文本编辑器将其输入到文件tut.erl中。文件名称必须为tut.erl不能任意修改,并且需要将其...
[阅读全文]
-
Erlang Shell
[内容预览]
0 | 2019-01-15 16:23:25
由Loen创建,最后一次修改2016-08-12ErlangShell绝大多数操作系统都有命令解释器或者外壳(shell),Unix与Linux系统中有很多不同的shell,windows系统上也有命令行提示。Erlang自己的shell中可以直接编写Erlang代码,并被执行输出执行后的效果(可以参考STDLIB中s...
[阅读全文]
-
Erlang 顺序编程
[内容预览]
0 | 2019-01-15 16:23:24
由Loen创建,路飞最后一次修改2016-08-12
[阅读全文]