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

Erlang编程入门之认识其模块和函数

阅读更多

【IT168 技术文档】一个编程语言如果只能让我们从shell中运行代码,那么可以说这个语言的用处受到了很大的限制,至少我会感觉到不爽。这里有一个小的Erlang程序。我们将下面的内容键入一个叫做tut.erl的文件(这里需要注意到的是我们的tut.erl文件应该放在erl程序的同一个目录下,文件名应该和模块名相同,这样Erlang才能很好的找到我们的模块,至于编辑器随便一个支持纯文本的就可以哈)。如果我们的编辑器有一个Erlang模式就可能编写起来更加方便,并且代码的格式也会变得更加规范,但是我们也许也会产生对这些编辑器或者IDE的强烈依赖性。下面就是我们要键入的代码:
  -module(tut).
  -export([double/1]).
  double(X) ->
  2 * X.


  不难看出,我们的程序的任务就是将输入的数字进行“乘以2”的操作。我们后面会解释前两行的含义。我们现在来编译一下这个程序,我们在Erlang shell中键入下面的内容:

  3> c(tut).

  {ok,tut}

  {ok,tut} 告诉我们编译成功的完成了。如果显示的是“error”,那么可能我们的文件位置或者键入的代码文本存在某些问题,出错信息会给我们一些提示,我们按照提示做就好了,仔细的检查代码在任何时候都是需要的 : )

  现在我们来运行以下这个程序:

  4> tut:double(10).

  20

  和预计的一样,10的“乘以2”之后是20(貌似是废话)。

  现在让我们回到最开始的两行代码。Erlang程序一般是保存在文件中的。每个文件我们在Erlang中称为module(模块)。第一行就是告诉我们这个模块的名字。

  -module(tut).

  这段代码告诉我们该模块的名称为“tut”。注意这行最后的“.”符号是必不可少的。这个模块名必须和保存这段代码的文件(后缀为“erl”的文件)有相同的名称。所以这里我们要求了文件名必须是“tut.erl”的原因。当我们在使用另一个模块中的函数时,我们使用下面的语法module_name:function_name(arguments).所以:

  4> tut:double(10).

  意味着我们从tut模块中调用一个叫做double的函数,并且带有参数“10”.

  第二行:

  -export([double/1]).

  含一位模块tut中包含一个名叫double的函数,并且带有一个参数(就是例子中的“10”),并且这个函数可以被从模块tut之外调用到。更深入的内容我们后面会介绍。现在回头看看上面行尾的句号“.”。

  现在有一个稍微复杂一点的例子,是用来进行阶乘(比如4的阶乘就是1*2*3*4的结果)操作的。键入下面的代码到一个新建的文本文件,并命名为tut1.erl:
  -module(tut1).
  -export([fac/1]).
  fac(1) ->
  1;
  fac(N) ->
  N * fac(N - 1).


  编译这个文件:

  5> c(tut1).

  {ok,tut1}

  现在我们计算4的阶乘:

  6> tut1:fac(4).

  24

  第一部分:

  fac(1) ->

  1;

  含义为1的阶乘是1.注意到这部分最后的“;”符号,它预示着下面还有这个函数的其他部分。第二部分:

  fac(N) ->

  N * fac(N - 1).

  含义是N的阶乘等于N乘以N-1的阶乘。注意这部分最后的符号“.”,含义为对于该函数已经没有更多的内容了,函数就此结束。

  一个函数可以有很多的参数。让我们扩展这个tut1模块,现在多包含一个“白痴函数”:两个数的相乘:
  -module(tut1).
  -export([fac/1, mult/2]).
  fac(1) ->
  1;
  fac(N) ->
  N * fac(N - 1).
  mult(X, Y) ->
  X * Y.


  注意到我们也扩展了-export这行,加入了一个包含两个参数的函数mult。

  编译一下:

  7> c(tut1).

  {ok,tut1}

  试一下我们的代码是否正常工作了:

  8> tut1:mult(3,4).

  12

  上面的例子使用了整数进行乘法运算,其中N/X/Y成为变量。注意:变量必须是以大写字母开头,否则编译会提示出错。下面的变量名就是合法的:Number,ShoeSize,Age等。

分享到:
评论

相关推荐

    Erlang编程

    ### Erlang编程入门 Erlang是一种专为并发计算设计的编程语言,由瑞典电信公司爱立信于20世纪80年代开发。由于其独特的并发处理能力,它在电信、银行、电子商务以及需要大量并发活动处理的系统中被广泛使用。Erlang...

    Erlang编程中文学习手册.pdf

    根据提供的文件信息,这份Erlang编程中文学习手册涵盖了Erlang编程语言的基础知识和一些进阶内容,旨在帮助读者从入门到初中级水平的提升。以下是手册中提到的Erlang编程的相关知识点。 首先,手册介绍了Erlang语言...

    Erlang趣学指南

    (494页带目录的高清扫描版) 这是一本讲解Erlang编程语言的入门指南,内容通俗...内容涉及模块、函数、类型、递归、错误和异常、常用数据结构、并行编程、多处理、OTP、事件处理,以及所有Erlang的重要特性和强大功能。

    erlang 入门练习

    通过分析`client.erl`,我们可以逐步了解Erlang编程的核心概念,并进一步深入学习这个强大的并发编程语言。在实际项目中,Erlang常用于构建大规模、高并发的系统,如网络服务器、分布式系统等。

    erlang并发编程

    Erlang是一种函数式编程语言,特别适合处理并发和实时系统,因其在电信行业的广泛应用而闻名。以下是一些关于Erlang并发编程的关键知识点: 1. 进程(Processes):在Erlang中,进程是非常轻量级的,每个进程都有...

    erlang闪电入门

    Erlang是一种专为高度并发性、分布式计算、和容错性设计的编程语言,...通过《Erlang闪电入门》这本书,读者可以获得对Erlang语言和其背后哲学的快速理解,并能在短时间内入门这一编程语言,开始自己的Erlang编程之旅。

    erlang资源

    这个“erlang资源”包含两本PDF书籍——《Erlang并发编程》和《Erlang入门手册》,它们是深入理解和学习Erlang语言的关键资料。 《Erlang并发编程》这本书可能涵盖了以下知识点: 1. **并发模型**:Erlang的并发...

    erlang趣学指南

    错误和异常处理也是Erlang编程的一个重要部分。由于Erlang的设计哲学是容错,因此它提供了一套独特的机制来处理程序中可能出现的错误。 Erlang还提供了多种常用数据结构,比如元组、列表、字典、集合等,这些数据...

    两本erlang电子书

    Erlang是一种面向并发的、函数式...它们不仅介绍了语言的基本概念,还提供了丰富的实战指导,帮助你在实践中不断提升Erlang编程技能。无论是为了个人兴趣还是职业发展,投入时间学习Erlang都将是一次富有成效的旅程。

    Erlang入门:构建application练习2

    Erlang是一种面向并发的、函数式编程语言,由瑞典电信设备制造商Ericsson开发,用于构建高可用性、分布式和实时系统。在本教程中,我们将深入探讨如何使用Erlang构建一个名为"Application"的基本应用程序,这在...

    Erlang入门:构建application练习5(监督树)

    Erlang是一种面向并发的、函数式编程语言,特别适合于构建高可用性和容错性的分布式系统。在Erlang中,"应用"(application)是组织代码的基本单元,它包含了模块、配置文件以及启动和停止应用程序的逻辑。在这个...

    erlang入门手册

    - **模块和函数**: Erlang的代码组织方式是将函数放在模块中。每个模块都是一个单独的文件,这些文件以`.erl`为后缀。 - **原子(Atoms)**: 原子是Erlang中不可变的字面量,可以理解为常量,它们的值就是它们的...

    Erlang资料大全

    Erlang的函数式编程特性也是其独特之处。它鼓励使用不可变数据结构和纯函数,这有助于编写无副作用的代码,使得程序更易于理解和测试。同时,Erlang支持模式匹配,这是一种强大的工具,可以在函数定义中匹配和解构...

    erlang书籍

    《Erlang程序设计》这本书可能是介绍Erlang基础概念和技术的一本入门书籍,涵盖了变量、数据类型、模式匹配、函数、进程、消息传递等核心概念。书中可能会深入讨论如何在Erlang中编写高效的并发程序,以及其独特的...

    Introducing Erlang

    整体来看,本书很可能是面向想要学习Erlang的读者,特别是对那些对函数式编程和并发计算感兴趣的人来说,是一本入门到深入的优秀教程。Erlang的这些特性使得它在处理大规模、分布式、高度可用和容错的系统时,成为了...

    Erlang程序设计及源码

    本资源包含了一本Erlang程序设计的入门经典书籍及其配套源码,适合初学者深入理解Erlang编程。 1. **Erlang简介** Erlang以其强大的并发处理能力而闻名,它采用了轻量级进程模型,使得在单个系统中可以同时运行...

    erlang open poker 最好的入门程序源码

    1. **Erlang语言基础**:源码中会包含Erlang的基本语法,如模块(module)、函数(function)、过程(process)和模式匹配(pattern matching)等。通过阅读源码,你可以了解到如何组织Erlang代码,以及如何定义和...

Global site tag (gtag.js) - Google Analytics