`
zb_86
  • 浏览: 43195 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

erlang(初级)

阅读更多
早就听过erlang,但是今天才有时间开始动手,内心一阵惭愧啊。

介绍和安装,请自己baidu

语法说明:
Shell/语句:以.结束,不是其它语言一般的;结束
module/function:用任何文本编辑器编辑,如:(文件保存名tut.erl)
-module(tut).
-export([double/1]).
-export([fac/1, mult/2]).         %1表示1个参数,2表示2个参数

double(X) ->
    2 * X.

fac(1) ->
    1;                     %;表示该方法未结束,或者说只结束一部分
fac(N) ->
    N * fac(N - 1).

mult(X, Y) ->
    X * Y.

在文件保存的目录运行erlang,编译:c(module_name),上例就是c(tut)。返回{ok,module_name}表示成功。然后就可以直接调用module中的function。上例:tut:double(10).
Atoms:普通变量以大写字母开头,原子以小写字母开头。原子只是一个名称,没有任何值。作用之一就是作为function的简称或者说组成部分。hello(X, china) ,调用应该是module_name:hello(x, china).
如果执行出现错误,可以用function v/1. 例如v(9).其中9表示出错的shell的number。
Tuples:以{}区分。和其它语言的array一样。尤其是php和perl的。几乎一样。例如:{moscow, {c, -10}}  element 1 就是moscow, element 2 就是{c, -10}
Lists: [] 例如:[{moscow, {c, -10}}, {cape_town, {f, 70}},{stockholm,{c, -4}},{paris, {f, 28}}, {london, {f, 36}}]
list可以用"|"来分割。例如:[First |TheRest] = [1,2,3,4,5].那么First就是1, TheRest就是[2,3,4,5]
[E1, E2 | R] = [1,2,3,4,5,6,7].  E1是1, E2是2, R就是剩下的全部了
String:erlang中没有string,用list来代替,list内容是字符的ascii.例如:list[97,98,99]表示"abc"。 所以在Shell中输入[97,98,99].  得到"abc"
StandardModules:
io:
31>io:format("hello world~n", []).
hello world
ok
32> io:format("this outputs one Erlang term: ~w~n", [hello]).
this outputs one Erlang term: hello
ok
33> io:format("this outputs two Erlang terms: ~w~w~n", [hello, world]).
this outputs two Erlang terms: helloworld
ok
34> io:format("this outputs two Erlang terms: ~w ~w~n", [hello, world]).
this outputs two Erlang terms: hello world
ok

guard:看例子(得到List里面最大数):
-module(tut).
-export([list_max/1]).
list_max([Head|Rest]) ->
   list_max(Rest, Head).
list_max([], Res) ->
    Res;
list_max([Head|Rest], Result_so_far) when Head > Result_so_far ->   % when是一个关键字,说明当条件成立时走这个方法。 这种带有条件的称为guard
    list_max(Rest, Head);           
list_max([Head|Rest], Result_so_far)  ->
    list_max(Rest, Result_so_far).

guard的操作符:< less than, > greater than, == equal, >= greater or equal, =< less or equal, /= not equal

Scope中的变量:同一个Scope中的变量是不可变的,这个其它一些语言(clojure等)类似。
赋值:老规矩,=号。例如:
M = 5.
{X, Y} = {paris, {f, 28}}.
分享到:
评论

相关推荐

    Erlang初级入门(英文pdf)

    ### Erlang基础知识与特性 #### 一、Erlang简介 Erlang是一种专为处理大规模并发活动设计的编程语言,由瑞典电信设备制造商爱立信的计算机科学实验室(Computer Science Laboratory, CSLab)开发。该语言的目标是...

    erlang-java聊天

    本项目“erlang-java聊天”是一个初级水平的示例,展示了如何利用这两种语言进行交互,实现一个简单的聊天应用程序。这个聊天程序可能包括客户端和服务器端的组件,允许用户通过Erlang或Java环境进行实时通信。 **...

    Erlang程序设计

    为初级的程序员准备的Erlang程序设计,通俗易懂。

    gen_microservice:Erlang 微服务

    容错:我知道大多数高级开发人员不会编写错误,但是对于允许初级开发人员将代码推送到生产的特殊情况,我们需要被覆盖。 该库与 Erlang 的九个九运行时无缝集成,因此我们也为您提供了相关信息。 分布式系统 分布式...

    eartc:Erlang接口到近似重放跟踪编译器

    伯爵eartc是近似重播-跟踪编译器的简单Erlang端口/ cmdline接口,该工具用于I / O基准测试和重播strace日志。 导出的函数是init_listing / 1(用于geninit阶段),trace / 1(用于运行strace-artc),compile / 1...

    初级java笔试题-Concurrency-concepts:并发、多线程和并行编程概念指南。详细解释每个概念之间的差异,它们的优缺点

    初级java笔试题并发、多线程和并行编程概念 本文档描述了各种并发、多线程、并行编程方法和概念。 目的是编写一个单独的文档/wiki,其中包含您需要了解的有关并发的所有信息。 事情应该尽可能详细地解释清楚。 欢迎...

    初级java笔试题-my_tech_resources:我的技术资源

    初级java笔试题我的技术资源 - James Lavin 描述 我发现有用或认为可能对未来的我或像我这样的 Ruby/Javascript/Python/Erlang/Elixir/Elm 开发人员有用的资源链接。 主要类别 | | | | | | | | | | | | | | | | | | ...

    初级java笔试题-awesome-compilers1:很棒的编译器1

    初级java笔试题 编译器、解释器和运行时领域的优秀资源、学习材料、工具、框架、平台、技术和源代码项目的精选列表。 这份清单偏向于教育。 内容 学习 图书 总体概述 - 综合处理计算机系统,包括编译器、解释器和...

    付款界面java源码-dgiot:数蛙工业物联网SaaS平台(IndustrySaaSforIoTPlatform)

    DGIOT | 简体中文 | | DGIOT 是国内首款轻量级开源工业物联网持续集成平台 数蛙团队2016年之前,在互联网和移动互联网爬坑多年,2016年开始进入物联网爬坑,希望通过这个开源平台把多年爬坑经验共享...Erlang/OTP R21+

Global site tag (gtag.js) - Google Analytics