Hello World

在 Erlang 中編寫 hello world 應用程式時,你需要了解兩件事:

  1. 原始碼使用你選擇的文字編輯器以 erlang 程式語言編寫
  2. 然後在 erlang 虛擬機器中執行該應用程式。在這個例子中,我們將通過 erlang shell 與 erlang VM 進行互動。

首先是應用程式原始碼:

建立一個包含以下內容的新檔案 hello.erl

-module(hello).
-export([hello_world/0]).

hello_world() ->
  io:format("Hello, World!~n", []).

讓我們快速看看這意味著什麼:

  • -module(hello). 所有 erlang 函式都存在於模組中。然後使用模組構建應用程式,這是一組模組。第一行是識別這個模組,即 hello 。可以將模組與 Java 的進行比較 **
  • -export([hello_world/0]). 告訴編譯器哪些函式變為公共(與 OO 語言相比),以及相關函式的 arity 。arity 是函式所使用的引數數量。因為在 erlang 中,具有 1 個引數的函式被視為與具有 2 個引數的函式不同的函式,即使名稱可能完全相同。也就是說,hello_world/0 是一個完全不同於 hello_world/1 的功能。
  • hello_world() 這是函式的名稱。-> 表示轉換到函式的實現(正文)。這可以理解為“hello_world() 定義為……”。請注意,hello_world()(無引數)由 VM 中的 hello_world/0 識別,hello_world(Some_Arg)hello_world/1
  • io:format("Hello, World!~n", []) 從模組 io,呼叫函式 format/2 函式,這是標準輸出的函式。~n 是一個格式說明符,表示列印一個新行。[] 是由輸出字串中的格式說明符指示的要列印的變數列表,在這種情況下沒有任何內容。
  • 所有 erlang 語句必須以 .(點)結尾。

在 Erlang 中,返回函式中最後一個語句的結果。

現在,讓我們執行我們的應用程式:

從與檔案 hello.erl 檔案相同的目錄啟動 erlang shell:

$ erl

你應該得到一個看起來像這樣的提示(你的版本可能會有所不同):

Eshell V8.0  (abort with ^G)
1>

現在輸入以下命令:

1> c(hello).
{ok,hello}
2> hello:hello_world().
Hello, World!
ok

讓我們逐個瀏覽每一行:

  • c(hello) - 此命令在原子 hello 上呼叫函式 c。這有效地告訴 Erlang 找到檔案 hello.erl,將其編譯成一個模組(將在目錄中生成一個名為 hello.beam 的檔案)並將其載入到環境中。
  • {ok, hello} - 這是呼叫上面的函式 c 的結果。它是一個包含原子 ok 和原子 hello 的元組。Erlang 函式通常返回 {ok, Something}{error, Reason}
  • hello:hello_world() - 它從模組 hello 呼叫函式 hello_world()
  • Hello, World! - 這是我們的功能列印。
  • ok - 這是我們的功能返回的。由於 Erlang 是一個函數語言程式設計語言,每一個函式返回的東西。在我們的例子中,即使我們沒有在 hello_world() 中返回任何內容,該函式中的最後一個呼叫是 io:format(...),該函式返回 ok,這又是我們的函式返回的。