Erlang你好,世界

示例

用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是函数采用的参数数量。由于在erlang中,具有1参数的函数被视为与具有2个参数的函数不同的函数,即使名称可能完全相同。即,与例如hello_world/0完全不同的功能hello_world/1。

  • hello_world()这是函数的名称。该->指示转变到功能的实现(身体)。这可以理解为“hello_world()定义为...”。请注意,hello_world()(没有参数)hello_world/0在VM中由标识hello_world(Some_Arg)为hello_world/1。

  • io:format("Hello, World!~n", [])从模块中io,format/2调用函数function,这是标准输出的函数。~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)-此命令c在一个原子上调用该函数hello。这有效地告诉Erlang查找文件hello.erl,将其编译为模块(hello.beam将在目录中生成一个名为的文件)并将其加载到环境中。

  • {ok, hello}-这是调用上述函数的结果c。它是一个包含一个原子ok和一个原子的元组hello。Erlang函数通常返回{ok, Something}或{error, Reason}。

  • hello:hello_world()-这hello_world()从模块中调用一个函数hello。

  • Hello, World! -这就是我们的函数打印的内容。

  • ok-这是我们的函数返回的结果。由于Erlang是一种函数式编程语言,因此每个函数都将返回某内容。在我们的例子中,即使我们没有在中返回任何内容hello_world(),该函数中的最后一个调用是toio:format(...)并且该函数返回了ok,这反过来又是我们函数返回的结果。