示例
% hello world program
-module(helloworld).
-export([start/0]).
start() ->
io:fwrite("Hello, world!\n").
對上述程序需要注意下面的一些事項 -
-
%符號是用來在程序中添加注釋的;
-
模塊聲明中,就像其它編程語言中的命名空間一樣。所以在這里,這個代碼將是一個叫作 helloworld 模塊的一部分;
-
export 函數(shù)用于使得程序中定義的任何函數(shù)都可以使用。我們定義了一個名為 start 的函數(shù),但是如果要使用 start 函數(shù),我們必須使用 export 語句。而 /0 則表 start 函數(shù)接受 0 個參數(shù)。
-
最后,我們定義 start 函數(shù)。在這里,我們使用一個模塊: io ,這個模塊在 Erlang 中提供有輸入輸出功能。
我們使用 fwrite 函數(shù)來輸出 “Hello World” 到控制臺。
上述程序保存到一個文件:
helloworld.erl,并放到
D:\worsp 目錄下,打開終端,進(jìn)入到
D:\worsp 目錄下,執(zhí)行以下命令,將會輸出如下結(jié)果 -
語句的一般形式
你可能已經(jīng)看到在 Erlang 語言中使用不同的符號。讓我們通過一個簡單的 Hello World 程序來說明 -
-module(helloworld).
-export([start/0]).
每個語句分隔用點(.)符號。在 Erlang 中每個語句需要使用此分隔符作為這個語句的結(jié)束。在 Hello World 程序的例子程序如圖所示 -
io:fwrite("Hello, world!\n").
-export([start/0]).
模塊
在Erlang中,所有的代碼都會分為模塊。一個模塊是由一系列的屬性和函數(shù)聲明來組成。它就類似于在其他編程語言中的命名空間,用來在不同的代碼單元的邏輯上分開是同一個概念的。
定義模塊
模塊使用 module 標(biāo)識符定義。一般語法及其示例如下。
語法
-module(ModuleName)
模塊名稱必須與文件名減去擴(kuò)展名 .erl 后相同。否則,預(yù)期代碼將無法加載正常工作。
語法
-module(helloworld)
這些模塊在隨后的章節(jié)中被覆蓋,這只是讓你對模塊應(yīng)當(dāng)如何定義有一個基本的理解。
Erlang中的 import 語句
在 Erlang 中,如想使用 Erlang 中現(xiàn)有模塊的功能,可以使用 import 語句。import語句的一般形式如下面程序中描述 -
示例
-import (modulename, [functionname/parameter]).
在這里,
讓我們修改之前寫的 Hello World 程序,在其中使用一個 import 語句。
如下面的示例程序中所示:
示例
% hello world program
-module(helloworld).
-import(io,[fwrite/1]).
-export([start/0]).
start() ->
fwrite("Hello, world!\n").
在上面的代碼中,我們使用 import 關(guān)鍵字導(dǎo)入庫 “io”,并指定 fwrite 函數(shù)。所以,現(xiàn)在每當(dāng)調(diào)用 fwrite 函數(shù)時,我們不必再加上 io 這個模塊名稱。
Erlang中的關(guān)鍵詞
關(guān)鍵字是在 Erlang 中一個保留字,不應(yīng)被用于其目的之外的其他任何不同的目的。
以下是 Erlang 中的關(guān)鍵字列表。
after
|
and
|
andalso
|
band
|
begin
|
bnot
|
bor
|
bsl
|
bsr
|
bxor
|
case
|
catch
|
cond
|
div
|
end
|
fun
|
if
|
let
|
not
|
of
|
or
|
orelse
|
receive
|
rem
|
try
|
when
|
xor
|
|
Erlang中的注釋
注釋用于在代碼中注釋(注解)說明代碼。單行注釋用 % 符號在該行的任何位置來識別。
以下是使用注釋的一個例子 -
示例
% hello world program
-module(helloworld).
% import function used to import the io module
-import(io,[fwrite/1]).
% export function used to ensure the start function can be accessed.
-export([start/0]).
start() ->
fwrite("Hello, world!\n").