erlang 里的if 和 case】的更多相关文章

case Expression of Pattern1 [when Guard1] -> Expr_seq1; Pattern2 [when Guard2] -> Expr_seq2; … end if Guard1 -> ...; Guard2 -> ...; ...; end. Erlang 编程指南 第三章程顺序编程里有这么一个例子 %%test1(X) -> %% if %% X > -> greater; %% X < -> smaller;…
模式匹配的简介 scala语言里的模式匹配可以看作是java语言中switch语句的改进. 模式匹配的类型 包括:常量模式.变量模式.构造器模式.序列模式.元组模式以及变量绑定模式等. 常量模式匹配 常量模式匹配,就是在模式匹配中匹配常量啦. objectConstantPattern{ def main(args:Array[String]) :Unit = { //模式匹配结果作为函数返回值 defpatternShow(x : Any) = x match { case 5 => "…
Erlang Abstract Format并不难懂,只是枯燥一点罢了,如果把Abstract Format的文档翻译出来,其实就是Erlang教科书中语法入门的部分. Erlang Abstract Format实际上是用Erlang代码的AST,下面通过一些真切的实例代码了解一下它的一些细节. 首先,Erlang Abstract Format里面包含一些概念,我会在下面的描述中把涉及到的概念字体加粗.请注意概念之间的层次关系.Erlang代码本身使用非常扁平的module组织,每一个mod…
Erlang error handling Contents Preface try-catch Process link Erlang-way error handling OTP supervisor tree Restart process 0. Preface 说到容错处理,大概大家都会想到 try-catch 类结构,对于绝大多数传统语言来说,确实是这样.但是对于Erlang来说,容错处理是其一个核心特性,真正涉及到的是整个系统的设计,与 try-catch 无关:其核心是Erlang…
1. 传参或在匿名函数内慎用self() 通常在做消息传递或新建进程的时候我们需要将当前进程的Pid发给目标进程以便接收返回信息,但初学者不留意容易犯以下错误 spawn(fun() -> loop(self(), gen_tcp:accpet(...)) end). fun这段代码在本进程内是不会预先执行的,代码会原封不动传给目标进程.当实际调用self()的时候,获取的实际不是本进程的Pid了. 所以建议当需要传递当前进程Pid或者其他当前进程类似函数的时候,先求值再传递.保持良好习惯就可以…
<Erlang程序设计(第2版)> 基本信息 作者: (瑞典)Joe Armstrong 译者: 牛化成 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787115354570 上架时间:2014-5-27 出版日期:2014 年6月 开本:16开 页码:428 版次:2-1 所属分类:计算机 > 软件与程序设计 > 综合 > 高级程序语言设计 更多关于>>><Erlang程序设计(第2版)> 编辑推荐 在多核.并发.分布为王的…
转自:http://www.itkee.com/developer/detail-318.html 今天在家里闲来无事,实践了一下Erlang的Socket的功能.记录一下在过程中遇到的一些问题,以及编码的步骤. 1. 对于测试用例的介绍:Erlang编写TCP服务器.只做一次Accept,接收到Socket 之后开始收数据.用python编写Client,连接到服务器上:发送LEN(int)+CMD(short)+BODY(binary)格式的数据 包.用于熟悉Erlang如何做拆解包,数据读…
http://blog.csdn.net/slmeng2002/article/details/5532771 最近关注erlang游戏服务器开发  erlang大牛写的游戏服务器值得参考 介绍本文以我的OpenPoker项目为例子,讲述了一个构建超强伸缩性的在线多游戏玩家系统.OpenPoker是一个超强多玩家纸牌服务器,具有容错.负载均衡和无限伸缩性等特性.源代码位于我的个人站点上,大概10,000行代码,其中1/3是测试代码. 在OpenPoker最终版本敲定之前我做了大量调研,我尝试了D…
erlang里面的httpd模块保存的http请求头里面,其中remote_addr 保存的是IPv6的格式. 即使是IPv4,也会用IPv6的格式来保存.如 {remote_addr, "0:0:0:0:0:FFFF:C0A8:4E01"} 其实表示的就是IPv4为127.0.0.1的IPv6格式. 虽然IPv6是趋势,但没使用,这样用起来很不方便.特别是我这边要实现一个IP白名单的功能. 所以写了一个比较简单的转换方法. -module(test). -export([ipv6_2…
抄自这里 首先,库存在的目的大致可分为:1.提供便利2.尽可能解决一些痛点 首先,我们先明确一下Erlang编程语言的一些痛点(伪痛点):1,单进程问题Erlang虚拟机属于抢占式调度,抢占式调度有很多好处,但是同样也存在这弊端.虚拟机在默认情况下分配个每个进程的资源都是相同的,但是若一个进程(gen_server/event/fsm)要为其他许多进程提供服务,这个进程就极有可能成为整个Erlang系统的瓶颈所在.http://www.cnblogs.com/--00/p/4277640.htm…