Erlang基礎語法


為了瞭解 Erlang 的基本語法,讓我們在一個簡單的 Hello World 程式先來看看。

範例

% hello world program
-module(helloworld). 
-export([start/0]). 

start() -> 
   io:fwrite("Hello, world!\n").
對上述程式需要注意下面的一些事項 -
  • %符號是用來在程式中新增註釋的;
  • 模組宣告中,就像其它程式設計語言中的名稱空間一樣。所以在這裡,這個程式碼將是一個叫作 helloworld 模組的一部分;
  • export 函式用於使得程式中定義的任何函式都可以使用。我們定義了一個名為 start 的函式,但是如果要使用 start 函式,我們必須使用 export 語句。而 /0 則表 start 函式接受 0 個引數。
  • 最後,我們定義 start 函式。在這裡,我們使用一個模組: io ,這個模組在 Erlang 中提供有輸入輸出功能。
    我們使用 fwrite 函式來輸出 「Hello World」 到控制台。
上述程式儲存到一個檔案:helloworld.erl,並放到 D:\worsp 目錄下,開啟終端,進入到 D:\worsp 目錄下,執行以下命令,將會輸出如下結果 -

語句的一般形式

你可能已經看到在 Erlang 語言中使用不同的符號。讓我們通過一個簡單的 Hello World 程式來說明 -
  • 連字元符號(-)通常與module, import 和 export 語句一起使用。連字元符號一種用來為每個語句給出相應意思的。因此,在 Hello World 程式的例子有下面兩個語句 -
-module(helloworld).
-export([start/0]).
每個語句分隔用點(.)符號。在 Erlang 中每個語句需要使用此分隔符作為這個語句的結束。在 Hello World 程式的例子程式如圖所示 -
io:fwrite("Hello, world!\n").
  • 斜線(/)符號用於函式定義其接受的引數數量,如下 0 表示無引數傳遞
-export([start/0]).

模組

在Erlang中,所有的程式碼都會分為模組。一個模組是由一系列的屬性和函式宣告來組成。它就類似於在其他程式設計語言中的名稱空間,用來在不同的程式碼單元的邏輯上分開是同一個概念的。

定義模組

模組使用 module 識別符號定義。一般語法及其範例如下。

語法

-module(ModuleName)
模組名稱必須與檔案名減去擴充套件名 .erl 後相同。否則,預期程式碼將無法載入正常工作。

語法

-module(helloworld)
這些模組在隨後的章節中被覆蓋,這只是讓你對模組應當如何定義有一個基本的理解。

Erlang中的 import 語句

在 Erlang 中,如想使用 Erlang 中現有模組的功能,可以使用 import 語句。import語句的一般形式如下面程式中描述 -

範例

-import (modulename, [functionname/parameter]).

在這裡,

  • Modulename ? 這是需要被匯入的模組的名稱。

  • functionname/parameter ? 這是要被匯入的在模組中的函式

讓我們修改之前寫的 Hello World 程式,在其中使用一個 import 語句。
如下面的範例程式中所示:

範例

% hello world program
-module(helloworld).
-import(io,[fwrite/1]).
-export([start/0]).

start() ->
   fwrite("Hello, world!\n").
在上面的程式碼中,我們使用 import 關鍵字匯入庫 「io」,並指定 fwrite 函式。所以,現在每當呼叫 fwrite 函式時,我們不必再加上 io 這個模組名稱。

Erlang中的關鍵詞

關鍵字是在 Erlang 中一個保留字,不應被用於其目的之外的其他任何不同的目的。
以下是 Erlang 中的關鍵字列表。
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").