`
mryufeng
  • 浏览: 991939 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

erlang函数调用新语法(用于代码hot replace)

阅读更多
R12B0的文档里面写着:

6.6 Function Calls

ExprF(Expr1,...,ExprN)
ExprM:ExprF(Expr1,...,ExprN)
   

ExprM should evaluate to a module name and ExprF to a function name or a fun.

When including the module name, the function is said to be called by using the fully qualified function name. This is often referred to as a remote or external function call. Example:

lists:keysearch(Name, 1, List)
   

The module name can be omitted, if ExprF evaluates to the name of a local function, an imported function, or an auto-imported BIF. Then the function is said to be called by using the implicitly qualified function name. Examples:

handle(Msg, State)
spawn(m, init, [])
   

To avoid possible ambiguities, the fully qualified function name must be used when calling a function with the same name as a BIF, and the compiler does not allow defining a function with the same name as an imported function.

Note that when calling a local function, there is a difference between using the implicitly or fully qualified function name, as the latter always refer to the latest version of the module. See Compilation and Code Loading.

If ExprF evaluates to a fun, only the format ExprF(Expr1,...,ExprN) is correct. Example:

Fun1 = fun(X) -> X+1 end
Fun1(3)
=> 4

Fun2 = {lists,append}
Fun2([1,2],[3,4])
=> [1,2,3,4]

   
For code replacement of funs to work, the tuple syntax {Module,FunctionName} must be used to represent the fun.

分享到:
评论
2 楼 mryufeng 2008-01-18  
测试过了吗?还是从代码里面看出来的
1 楼 Trustno1 2008-01-18  
这个调用非常慢.

相关推荐

    ecg:Erlang函数调用图生成器

    为了简单使用,请编译tracer.erl并与您的程序一起将tracer.beam添加到Erlang的代码加载路径中。 并指定要跟踪和跟踪模式的模块: global或local ,这意味着要跟踪的全局或局部函数调用,然后启动程序,在要结束分析...

    erlang调用java

    本文将详细探讨如何在`Erlang`中调用`Java`代码,特别是在`YAWS`应用中调用`J2EE`方法。 首先,`Erlang`调用`Java`的主要工具是`Jinterface`,这是一个`Erlang`的标准库,它提供了与`Java`交互的接口。`Jinterface`...

    远古封神+英雄远征的ERLANG游戏服务器代码

    ERLANG是一种为并发、分布式和容错系统设计的函数式编程语言,因其在实时系统和大规模并发处理中的优秀性能而被广泛应用于游戏服务器开发。这份压缩包包含了这两款游戏的Erlang服务器源码,为深入理解游戏服务器的...

    erlang启动多节点,跨节点调用函数

    1.完成makefile,直接运行/script目录中的makefile.cmd就能编译文件 2.完成启动多节点的脚本,运行/script目录中的run.cmd可以启动3个节点,...3.完成跨节点函数的调用,记录日志都会在gm节点中执行 4.完成日志记录系统

    Erlang B星寻路算法源代码 B*寻路算法源代码

    Erlang B星寻路算法源代码 B*寻路算法源代码, 由C++改写而来。效率是A星算法的几十倍到上百倍。做为服务端怪物寻路的最佳选择。

    Erlang应用部署与热代码替换--理解2

    通常,开发者会在新版本的代码中实现`code_change/3`函数,这是一个关键组件,用于处理从旧版本到新版本的数据转换。该函数接收旧状态、旧版本号和新版本号作为参数,返回新状态。当进程因热代码替换而重启时,`code...

    KMP(Erlang)代码实现

    该函数调用了kmp_search_递归函数,并通过kmp_next函数生成部分匹配表(NextList),然后在递归的过程中使用这个表来决定下一步的比较位置。 2. kmp_search_递归函数:这是实际执行匹配过程的函数,它通过递归的...

    erlang并发编程实战源代码

    erlang并发编程实战源代码erlang并发编程实战源代码

    xiandiao_erlang_Erlang课后习题_

    6. **模式匹配**:Erlang的函数调用允许模式匹配,使得解构复杂数据结构变得简单,提高了代码的可读性和可维护性。 课后习题的实践价值: 1. **理解基本语法**:通过解决课后习题,学习者可以熟悉Erlang的基本语法...

    erlang中文基础教程

    例如,用户可以创建一个模块,定义一个函数来实现某个计算任务,然后在 Erlang Shell 中调用该函数来实现任务。 4. 编译和运行 在 Erlang 中,用户需要编译模块然后才能运行。编译模块可以使用 c() 函数,例如 c...

    erlang代码热替换与应用部署

    4. **切换版本**:使用`code:replace/2`函数进行代码切换,这个过程会将所有依赖于旧版本的进程安全地引导到新版本。 在实际应用部署中,开发者通常会结合Erlang的释放(release)管理工具,如`systools`和`reltool...

    英雄远征erlang服务器源码含数据库

    1. **Erlang语言特性**:Erlang是一种函数式编程语言,设计用于构建大规模、高并发、分布式和容错的系统。它的并发模型基于进程,每个进程之间通过轻量级的消息传递进行通信,这使得Erlang在处理大量并发连接时表现...

    rustler编写erlang nif

    - NIFs允许Erlang代码调用外部函数,这些函数由其他语言实现,通常用于性能优化。 - NIFs可以提高计算密集型任务的效率,但必须谨慎处理,因为它们可能会破坏Erlang的进程隔离和错误恢复机制。 2. **Rustler介绍*...

    一个我自己学习Erlang的聊天室服务器及客户端代码

    2. Erlang-Java桥接库:为了方便Java与Erlang的交互,可能存在使用如Jinterface这样的库,它允许Java程序直接调用Erlang函数,或者通过Erlang的Port机制进行通信。 总结,这个项目展示了如何利用Erlang强大的并发和...

    erlang 部分源码

    Erlang是一种面向并发的、动态类型的编程语言,主要用于构建高可用性、容错性和分布式系统。这个压缩包包含的是Erlang的部分源代码,尽管可能不完整,但仍然能够提供对Erlang语言实现机制的深入了解。 1. **Erlang...

    erlangB计算器

    在MATLAB中实现Erlang B计算器,可以利用其内置的数学函数和循环结构,将Erlang B公式转化为可执行的代码。Erlang B公式为: \[ B(N, \lambda) = \frac{\lambda N}{N + \lambda} \] 其中,N表示服务通道数,λ表示...

    erlang nif test

    NIFs是Erlang与C交互的重要手段,它允许Erlang代码调用C函数,执行无法或不适合在Erlang虚拟机(VM)上进行的计算任务,比如硬件操作、加密算法或者高性能的数据处理。 创建一个Erlang NIF通常涉及以下几个步骤: ...

    erlang趣学指南

    Erlang中的模块可以类比于其他语言的类,它包含了一组可以被其他模块调用的函数。函数是模块中的核心,用于执行任务和返回结果。 类型系统是Erlang的另一大特色。Erlang是一种动态类型语言,类型检查在运行时进行,...

    erlang编程 Introducing Erlang

    Erlang是一种函数式编程语言,由爱立信在1986年开发,主要用于构建高可用性、容错性和并发性的分布式系统。"Introducing Erlang"是Simon St. Laurent撰写的一本入门级教程,旨在帮助初学者理解和掌握Erlang的核心...

    erlang资源

    Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson开发,用于构建高可用性、分布式和实时系统。这个“erlang资源”包含两本PDF书籍——《Erlang并发编程》和《Erlang入门手册》,它们是深入...

Global site tag (gtag.js) - Google Analytics