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
,這又是我們的函式返回的。