Erlang - 基本語法



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

示例

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

start() -> 
   io:fwrite("Hello, world!\n").

關於以上程式需要注意以下幾點:

  • % 符號用於在程式中添加註釋。

  • module 語句就像在任何程式語言中新增名稱空間一樣。因此,在這裡,我們提到此程式碼將是名為 **helloworld** 的模組的一部分。

  • export 函式用於定義程式中定義的任何函式都可以使用。我們正在定義一個名為 start 的函式,為了使用 start 函式,我們必須使用 export 語句。** /0 ** 表示我們的函式“start”接受 0 個引數。

  • 我們最終定義了我們的 start 函式。在這裡,我們使用了另一個名為 **io** 的模組,該模組包含 Erlang 中所有必需的輸入輸出函式。我們使用 **fwrite** 函式將“Hello World”輸出到控制檯。

以上程式的輸出將是:

輸出

Hello, world!

語句的一般形式

在 Erlang 中,您已經看到 Erlang 語言中使用了不同的符號。讓我們回顧一下我們在簡單的 Hello World 程式中學到的內容:

  • 連字元符號 **(–)** 通常與模組、匯入和匯出語句一起使用。連字元符號用於根據需要賦予每個語句含義。因此,來自 Hello World 程式的示例如下所示:

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

每個語句都用點 **(.)** 符號分隔。Erlang 中的每個語句都需要以這個分隔符結尾。來自 Hello World 程式的一個示例如下所示:

io:fwrite("Hello, world!\n").
  • 斜槓 **(/)** 符號與函式一起使用,以定義函式接受的引數數量。

-export([start/0]).

模組

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

定義模組

模組是用模組識別符號定義的。一般語法和示例如下所示。

語法

-module(ModuleName)

**ModuleName** 必須與檔名(減去副檔名 **.erl**)相同。否則程式碼載入將無法按預期工作。

示例

-module(helloworld)

這些模組將在後續章節中詳細介紹,這只是為了讓您對如何定義模組有一個基本的瞭解。

Erlang 中的匯入語句

在 Erlang 中,如果想要使用現有的 Erlang 模組的功能,可以使用 import 語句。匯入語句的一般形式如下所示:

示例

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

其中,

  • **Modulename** - 這是需要匯入的模組的名稱。

  • **functionname/parameter** - 需要匯入的模組中的函式。

讓我們更改編寫 Hello World 程式的方式以使用匯入語句。示例如下所示:

示例

% 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").
廣告