`
spartan1
  • 浏览: 365120 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

erlang(2)

 
阅读更多

这是10.4的:

erlang过程编程知识:
erlang中,函数定义的->前,可以使用when xxx限定该clause的使用范围。这里的xxx称为guard。
erlang中的等号“=”,称为匹配操作符(match operator),其作用不单单是对变量进行初次赋值,主要是说明等号两侧的对象是匹配的,同时也可以对左侧的初次定义的变量进行赋值。因为是匹配操作符,而不是赋值操作符,所以可以使用5=M这种表达式(这里的M必须已经赋值了)
erlang中的if condition1->action1; condition2->action2 end结构相当于java和C中的switch。注意最后一个condition->action后,end前不能加分号。if结构中必须有至少一个condition是符合的,否则程序出错,所以最后一个condition通常为true,类似switch中的default。condition中可以使用逗号分隔两个condition,表示and,用分号分隔两个condition,表示or。
除了if之外,erlang中还有一个条件结构case Variable of xxx1->action1;xxx2->action2 end。这里的xxx1可以是一个tuple,其中各个值由Variable的值进行赋值。xxx1和->之间可以带上when子串。

condition中,==, >=和C中一样,但小于等于和不等于不同:=<和/=

BIF: built-in functions

高阶函数(High Order Function):
 X = fun(A)->A+2 end. 如:
lists:map(fun(X)->X*3 end, [1,2,3]).,执行结果如下:[3,6,9]。
对于已经定义的函数,在高阶函数中引用它时可以使用 fun FunctionName/Arity的方式:fun func1/2。
在匹配时,如果不关心一个变量的值,可以使用_代替这个变量的名字,这里“_”称为匿名变量。

erlang并发编程和分布式编程知识:
BIF spawn有三个参数:模块名,函数名,参数列表。spawn返回一个pid(如<0.63.0>)。
发送消息:pid ! message
接收消息:receive msg1->action1;msg2->action2 end
self()返回自己的pid
注:erlang中,逗号用于分隔单独表达式,分号用于分隔推导式(->),句号用于分隔函数定义。同一个推导式内部不能用分号分隔。

register(some_atom, Pid)将把pid注册为名字some_atom,此时可以直接用some_atom ! msg发送消息。这个注册只在本erlang节点有效,跨界点发送时必须使用{some_atom, NodeName} ! msg发送消息。

spawn(NodeName, module, function, arglist)在NodeName节点上启动一个进程,所有输入输出都重定向到自己。

erlang分布式部署时,每个erlang系统是一个erlang节点,每个节点必须在当前用户home目录下存在文件.erlang.cookie,内容是一个相同的atom,用以做验证用。erlang启动时使用参数-sname name指定节点名,通信时使用NodeName@HostName指定一个节点。 pid中带有了节点信息。

receive可以加after TimeInMilliSeconds -> action到end前,用作超时处理

 

分享到:
评论

相关推荐

    erlang programming

    2. **并发编程**:Erlang的并发模型是其独特之处。它通过轻量级进程(Lightweight Processes, LWP)实现并发,进程间通信(Inter-Process Communication, IPC)主要依赖消息传递。Concurrent Programming in ERLANG...

    Programming Erlang 2nd.pdf

    Concurrency is natural in Erlang. The real world actually has independent things communicating through messages. I’m an ex-physicist—we perceive the world by receiving messages. Packets of light and...

    Introducing Erlang Getting Started in Functional Programming(2nd) epub

    Introducing Erlang Getting Started in Functional Programming(2nd) 英文epub 第2版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    RabbitMQ + Erlang语言包下载安装包

    2.安装时一定要以管理员身份运行erlang的安装包,不然后面会出现问题。 3.安装的路径一定不要出现中文或者空格。 4.安装的时候一定要先安装erlang,因为RabbitMQ是由erlang语言开发的。 (1)安装erlang 1.以管理员...

    erlang编程 Introducing Erlang

    ### 2. 并发与轻量级进程 Erlang的一大亮点是其内置的并发机制。它使用轻量级进程(Lightweight Processes, LWP)来实现并发,每个进程有自己的消息队列,通过消息传递进行通信。这种模型降低了同步的复杂性,提高...

    erlang22最新下载包

    Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson为了实现分布式实时、高可靠性系统而开发。Erlang以其强大的并行处理能力、容错性和易于构建大规模分布式系统的特点,在电信、金融和互联网等...

    win64_erlang24.2.2

    win64位系统 。 erlang24.2.2。

    erlang25.0 windows版本

    2. **API更新**:可能对Erlang的内置函数或模块进行增强,提供新的功能或修复已知问题。 3. **兼容性提升**:与先前版本相比,25.0可能增强了与其他软件或框架的兼容性。 4. **错误修复**:解决上一版本中的已知问题...

    erlang_版本24.3.4.4

    Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson开发,主要用于构建高可用性、分布式和实时系统。版本24.3.4.4是Erlang的一个更新版本,包含了对先前版本的改进和修复。Erlang以其强大的错误...

    Erlang程序设计(第2版)1

    【Erlang程序设计(第2版)】是由Erlang之父Joe Armstrong撰写的一本经典著作,专注于介绍Erlang编程语言在并发、分布式和容错系统中的应用。本书适用于初学者和有一定经验的Erlang程序员。作者在书中讨论了如何利用...

    Pragmatic.Programming.Erlang.2nd.Edition

    2. **社区项目介绍:**书中还详细介绍了Erlang社区中重要的开源项目,如构建工具rebar和Web框架cowboy,这些项目极大地简化了Erlang项目的构建和部署过程。 3. **实用技巧与案例分析:**除了理论知识外,作者还分享...

    Erlang 20.3linux安装包

    2. **解压**:解压缩下载的文件到一个合适的目录,通常使用`tar`命令来完成。 ```bash tar -xvf Erlang_20.3linux.tar.gz ``` 3. **安装**:进入解压后的目录,然后运行安装脚本。 ```bash cd erlang/20.3 ...

    erlang资源

    2. ** OTP(Open Telecom Platform)**:OTP是Erlang生态系统的一部分,提供了设计模式、库和工具,用于构建可靠和可扩展的系统。书中可能讲解了OTP的设计原则和组件,如GenServer、GenEvent和Supervisor等。 3. **...

    xiandiao_erlang_Erlang课后习题_

    2. **并发与并行**:Erlang的轻量级进程(称为Erlang进程)使得并发编程变得简单。每个进程有自己的堆栈和消息队列,通过消息传递进行通信,降低了资源消耗,增强了系统的健壮性。 3. **热代码更新**:Erlang支持...

    Erlang官网下载过慢

    2. 使用代理:如果你在公司或特定区域,可能需要通过代理服务器访问外部资源。 3. 更换下载时间:避开网络高峰期进行下载。 4. 镜像站点:寻找Erlang的镜像站点,这些站点通常位于地理位置更近的地方,下载速度会更...

    ErlangB和ErlangC计算工具(exe可执行文件+excel两个)

    Erlang B和Erlang C是电信领域中两种重要的流量模型,用于预测和分析通信系统中的呼叫处理能力和拥塞情况。这两个模型由丹麦工程师Agner Krarup Erlang在20世纪初提出,至今仍广泛应用于现代通信网络的设计与优化。 ...

    erlang23.2版windows64位.zip

    2. **故障恢复**:Erlang的进程独立性和热代码替换功能使得系统在出现错误时可以优雅地失败,并且能够在运行时更新代码,无需重启服务。 3. **分布式**:Erlang天生支持分布式计算,节点间的通信如同本地进程一样...

    Erlang/OTP 26.2.1

    Erlang/OTP 26.2.1,Erlang,OTP,26.2.1

Global site tag (gtag.js) - Google Analytics