Hello World
在 Erlang 中編寫 hello world 應用程式時,你需要了解兩件事:
- 原始碼使用你選擇的文字編輯器以 erlang 程式語言編寫
- 然後在 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,這又是我們的函式返回的。