时间过的真快,从Erlang诞生到今天都快三十年了,真是太恐怖了,古人云,三十而立,那么Erlang到而立之年的时候会是什么样的地位呢?算了,天塌下来有地撑着,管咱们啥事,先想一想咱们到而立之年会是什么样子更靠谱一些。。。
无论学习哪门语言,总免不了来个Hello World跟这个世界打声招呼,既然我们环境已经有了,何乐而不为呢,有的时候建立最广泛的统一战线不仅是有必要的,而且是必须的,今天就来say Hello to the World~
Erlang这门函数式语言的确是与众不同,首先,第一个概念是函数,这个好理解,我们无论是C还是C++或者其他的语言都要写函数,Erlang也不例外,也有函数的概念。其次,其他语言的函数放到文件中,Erlang也不能免俗,但是在函数和文件中间还要有个模块的概念,就是说,函数一定要放到模块中,模块放到文件中,而且尤其要注意的是文件的名字和模块的名字必须要一致才行。最后,Erlang文件的后缀名是.erl,这个也容易理解,没什么弯弯绕。
先把这个Hello.erl写出来,代码如下
-module(hello).
-export([start/0]).
start() ->
io:format("Hello world~n" ).
然后另存为hello.erl,然后在Erlang Shell中进行编译运行。
Erlang R15B01 (erts-5.9.1) [smp:2:2] [async-threads:0]
Eshell V5.9.1 (abort with ^G)
1> cd ("d:/erlang/ex").
d:/erlang/ex
ok
2> c(hello.erl).
{ok,hello}
3> hello:start().
Hello world
ok
4>
OK, 顺利的向这个World发出了Hello的呼喊~~
补充。。。。。。
(1) -module(hello). 定义了这个模块的名字hello,跟文件的名字一致。
(2) -export([start/0]). 这行导出函数名字start,函数名必须放在列表中,列表用"[]"表示,后面的0是指的函数参数的个数。
(3)start(),位于“->”之前, 这个是函数头。
(4) cd,跟Linux一样,用于更改目录,在编译前必须将路径设置为文件所在的目录。
(5)c(hello.erl),对该Erlang源代码进行编译,可以省略后缀名,即c(hello).
(6)hello:start(), 调用hello模块中的start()函数,不同模块可以有相同的函数,因此用前面的模块名进行区分。对于内置函数(BIF)可以不用加模块名。
OK, Good Luck~~