WEB开发网
开发学院软件开发C语言 适合C# Actor的消息执行方式(1):Erlang中的模式... 阅读

适合C# Actor的消息执行方式(1):Erlang中的模式匹配

 2010-09-30 20:50:33 来源:WEB开发网   
核心提示: 元组(tuple):顾名思义,“元组”即为“单元的组合”,适合C# Actor的消息执行方式(1):Erlang中的模式匹配(3),单元即为“原子”,“绑定”以及其他“元组”,

元组(tuple):顾名思义,“元组”即为“单元的组合”,单元即为“原子”,“绑定”以及其他“元组”,通过某种方式结合起来。如上述代码中{ping, Ping_PID}便是一个由原子“ping”和绑定“Ping_PID”组成。当然您也可以写成{do, {ping, Hello, World}, 7}这种嵌套的元组结构。

Erlang中的receive原语的作用是接受下一条消息,直到有可用消息时它才会执行下面的代码。Erlang使用了模式匹配(Pattern Matching)来表现接受到不同消息时的逻辑分支。如pong的实现:

pong() -> 
  receive 
    finished -> 
      io:format("Pong finished~n", []); 
    {ping, Ping_PID} -> 
      io:format("Pong received ping~n", []), 
      Ping_PID ! pong, 
      pong() 
  end. 

在这段代码中,receive将会设法将消息与两种模式进行匹配:

原子finished,表示测试结束。

元组{ping, Ping_PID},表示一个元组,其中有两个单元,首先是ping原子,其次是Ping_PID绑定。

在成功匹配了某个模式之后,其中的绑定也会随之被赋上特定的值。如匹配了{ping, Ping_PID}之后,Ping_PID便被赋值为ping这个Actor对象的标识符。而在接下来的逻辑中,便可以使用这些“绑定”中的值。由于元组的结构不会受到任何限制,因此开发人员可以使用它来表示任意的抽象数据类型——更确切地说,应该是“数据结构”吧。

Erlang的优势与缺陷

上一页  1 2 3 4  下一页

Tags:适合 Actor 消息

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接