Erlang宏
在 messager 系统添加的另外一种东西是宏。在 mess_config.hrl 文件中包含如下的定义:
%%% Configure the location of the server node,
-define...
AI君
11个月前 (03-27) 37℃
0喜欢
Erlang记录
记录的定义如下:
-record(name_of_record,{field_name1, field_name2, field_name3, ......}).
例如,
-record(message_to,{to...
AI君
11个月前 (03-27) 37℃
0喜欢
Erlang头文件
如上所示,某些文件的扩展名为 .hrl。这些是在 .erl 文件中会用到的头文件,使用方法如下:
-include("File_Name").
例如:
-include("mess_interface.hrl"...
AI君
11个月前 (03-27) 39℃
0喜欢
将大程序分在多个文件中
为了演示需要,我们将前面几节中 messager 程序分布到五个文件中:
mess_config.hrl
配置所需数据头文件
mess_interface.hrl
客户端与 messager 之...
AI君
11个月前 (03-27) 37℃
0喜欢
转载请注明:www.ainoob.cn » 记录与宏...
AI君
11个月前 (03-27) 36℃
0喜欢
增加健壮性后的完整示例
让我们改进 Messager 程序以增加该程序的健壮性:
%%% Message passing utility.
%%% User interface:
%%% login(Name)
%%% O...
AI君
11个月前 (03-27) 38℃
0喜欢
Erlang错误处理
在讨论监督与错误处理细节之前,让我们先一起来看一下 Erlang 进程的终止过程,或者说 Erlang 的术语 exit。
进程执行 exit(normal) 结束或者运行完所有的代码而结束都被认为是进程的正常(...
AI君
11个月前 (03-27) 38℃
0喜欢
Erlang超时处理
在改进 messager 程序之前,让我们一起学习一些基本的原则。回忆一下,当 “ping” 结束的时候,它向 “pong” 发送一个原子值 finished 的消息以通知 “pong” 结束程序。另一种让 “pon...
AI君
11个月前 (03-27) 36℃
0喜欢
Erlang的健壮性
上一节中的完整示例还存在一些问题。当用户所登录的结点崩溃时,用户没有从系统中登出,因此该用户仍然在服务器的 User_List 中,但事实是用户已经不在系统中了。这会导致这用户不能再次登录,因为系统认为它已经在系统中...
AI君
11个月前 (03-27) 39℃
0喜欢
Erlang分布式编程
下面我们进一步对 ping pong 示例程序进行改进。 这一次,我们要让 “ping”、“pong” 进程分别位于不同的计算机上。要想让这个程序工作,你首先的搭建一下分布式的系统环境。分布式 Erlang 系统的...
AI君
11个月前 (03-27) 37℃
0喜欢
Erlang注册进程名称
上面的例子中,因为 “Pong” 在 “ping” 进程开始前已经创建完成,所以才能将 “pong” 进程的进程标识符作为参数传递给进程 “ping”。这也就说,“ping” 进程必须通过某种途径获得 “pong...
AI君
11个月前 (03-27) 38℃
0喜欢
Erlang 消息传递
下面的例子中创建了两个进程,它们相互之间会发送多个消息。
-module(tut15).
-export([start/0, ping/2, pong/0]).
ping(0, Pong_PID) ->...
AI君
11个月前 (03-27) 36℃
0喜欢
Erlang进程管理
相比于其它函数式编程语言,Erlang 的优势在于它的并发程序设计与分布式程序设计。并发是指一个程序中同时有多个线程在执行。例如,现代操作系统允许你同时使用文字处理、电子制表软件、邮件终端和打印任务。在任意一个时刻,...
AI君
11个月前 (03-27) 38℃
0喜欢
转载请注明:www.ainoob.cn » 并发编程...
AI君
11个月前 (03-27) 37℃
0喜欢
Erlang 高阶函数 (Fun)
Erlang 作为函数式编程语言自然拥有高阶函数。在 shell 中,我们可以这样使用:
86> Xf = fun(X) -> X * 2 end.
#Fun<erl_eval....
AI君
11个月前 (03-27) 37℃
0喜欢
Erlang 内置函数 (BIF)
内置函数是指那些出于某种需求而内置到 Erlang 虚拟机中的函数。内置函数常常实现那些在 Erlang 中不容易实现或者在 Erlang 中实现效率不高的函数。某些内置函数也可以只用函数名就调用,因为...
AI君
11个月前 (03-27) 36℃
0喜欢
Erlang if 与 case
上面的 find_max_and_min 函数可以找到温度的最大值与最小值。这儿介绍一个新的结构 if。If 的语法格式如下:
if
Condition 1 ->
Act...
AI君
11个月前 (03-27) 41℃
0喜欢
Erlang匹配、Guards 与变量的作用域
在某些场景下,我们可能需要找到最高温度或最低温度。所以查找温度值列表中最大值或最小值是非常有用的。在扩展程序实现该功能之前,让我们先看一下寻找列表中的最大值的方法:
-module(tu...
AI君
11个月前 (03-27) 35℃
0喜欢
Erlang完整示例
接下来这个示例是一个简单的消息传递者(messager)示例。Messager 是一个允许用登录到不同的结点并向彼此发送消息的应用程序。
开始之前,请注意以下几点:
这个示例只演示了消息传递的逻辑̵...
AI君
11个月前 (03-26) 37℃
0喜欢
Erlang输出至终端
用例子来说明如何格式化输出到终端再好不过了,因此下面就用一个简单的示例程序来说明如何使用 io:format 函数。与其它导出的函数一样,你可以在 shell 中测试 io:format 函数:
31> ...
AI君
11个月前 (03-26) 36℃
0喜欢