Date Modified Category Erlang Tags Erlang / HelloWorld

这两天开始玩Erlang,咱们从Hello World开始吧。

先是要到官网http://www.erlang.org/download.html下载安装包,安装上,设置好系 PATH,然后打开命令行,输入erl,如果看到类似于

Eshell V5.10.1  (abort with ^G)
1>

的话,就表示Erlang安装成功。这东西叫做Erlang的Shell。

然后就是最经典的Hello World:

随便用一个文本编辑器输入:

    -module(helloworld).
    -export([hw/0]).

    hw() -> io:format("Hello World! ~n").

保存为helloworld.erl,然后在命令行下进入该文件所在目录,进入Erlang Shell,输 入>后的命令:

    1> c(helloworld).
    {ok,helloworld}
    2> helloworld:hw().
    Hello World!
    ok

Yeah,Hello World完成!(我会告诉你我用了20分钟干这事么,下面是各种坑的介绍)

    % 首先,Erlang的注释符是百分号哦
    -module(helloworld).
    % -module是必要的,这可不是Bash或Python,上来就可以Echo或Print
    % 然后,helloworld 必须与文件名相同(除了不用加.erl)
    % 然后,行末的句点是必须的,虽然好不显眼

    -export([hw/0]).
    % -export也是必须的,这是用来说明哪些函数可以在外部被调用
    % 括号中必须是一个列表,换言之,加方括号
    % hw是函数名,斜杠后面是参数的数目,两者总是组合指明一个函数。
    % 参数数目不同的,即使同名,也是两个不同的函数
    % 还是记得句尾要加点

    hw() -> io:format("Hello World! ~n").
    % 这个是函数了
    % 函数名前面不用任何修饰,类似于其他语言中的Fun,def之类在这里是不必要的
    % 函数名是一个“原子”,换言之就是一个以小写字母开头的单词,可后继大小写字母下划线和@号
    % 或是你足够蛋疼的话,可以用单引号括起来的任意东西,比方说 '*&^%hw2'
    % 还有,不要拿fun当函数名,这个词另有用途
    % 函数名后面加括号,如果有参数,写在括号中
    % 括号后是 -> 这不是C语言中的指针,而是表示后面是函数的内容了
    % io:format可以当print,其实就是io模块里的format函数
    % 看清楚模块名和函数名之间是冒号,别弄成其他语言中的点
    % 双引号中是字符串,Erlang中的字符串实质上是数组
    % ~n是换行,用波浪线转义
    % 最后还是别忘记了是句点

这个erl文件的坑说完了,然后是Erlang Shell中的。

想用erl xxxxx.erl来执行是徒劳的,这货不是sh也不是python也不是pl,这么做你会 进入Erlang Shell。

然后先是要c(helloworld).编译,记得不要忘记句点。然后同一个目录下就会出现一个 同名的beam文件。

然后键入helloworld:hw().,回车没反应?又忘记句点了,补上,Hello World终于蹦 出来了。