Erlang 基础语法
为了了解 Erlang 的基本语法,让我们在一个简单的 Hello World 程序先来看看。
% hello world program
-module(helloworld).
-export([start/0]).
start() ->
io:fwrite("Hello, world!\n").
对上述程序需要注意下面的一些事项
%符号是用来在程序中添加注释的;
模块声明中,就像其它编程语言中的命名空间一样。所以在这里,这个代码将是一个叫作 helloworld 模块的一部分;
export 函数用于使得程序中定义的任何函数都可以使用。我们定义了一个名为 start 的函数,但是如果要使用 start 函数,我们必须使用 export 语句。而 /0 则表 start 函数接受 0 个参数。
最后,我们定义 start 函数。在这里,我们使用一个模块: io ,这个模块在 Erlang 中提供有输入输出功能。 我们使用 fwrite 函数来输出 “Hello World” 到控制台。
上述程序保存到一个文件:helloworld.erl,并放到 D:\worsp 目录下,打开终端,进入到 D:\worsp 目录下,执行以下命令,将会输出如下结果 -
语句的一般形式
你可能已经看到在 Erlang 语言中使用不同的符号。让我们通过一个简单的 Hello World 程序来说明 -
- 连字符符号(-)通常与module, import 和 export 语句一起使用。连字符符号一种用来为每个语句给出相应意思的。因此,在 Hello World 程序的例子有下面两个语句
-module(helloworld).
-export([start/0]).
每个语句分隔用点(.)符号。在 Erlang 中每个语句需要使用此分隔符作为这个语句的结束。在 Hello World 程序的例子程序如图所示
io:fwrite("Hello, world!\n").
- 斜线(/)符号用于函数定义其接受的参数数量,如下 0 表示无参数传递
-export([start/0]).
模块
在Erlang中,所有的代码都会分为模块。一个模块是由一系列的属性和函数声明来组成。它就类似于在其他编程语言中的命名空间,用来在不同的代码单元的逻辑上分开是同一个概念的。
定义模块
模块使用 module 标识符定义。一般语法及其示例如下。
语法
-module(ModuleName)
模块名称必须与文件名减去扩展名 .erl 后相同。否则,预期代码将无法加载正常工作。
语法
-module(helloworld)
这些模块在随后的章节中被覆盖,这只是让你对模块应当如何定义有一个基本的理解。
Erlang中的 import 语句
在 Erlang 中,如想使用 Erlang 中现有模块的功能,可以使用 import 语句。import语句的一般形式如下面程序中描述
示例
-import (modulename, [functionname/parameter]).
在这里,
Modulename− 这是需要被导入的模块的名称。
functionname/parameter − 这是要被导入的在模块中的函数
让我们修改之前写的 Hello World 程序,在其中使用一个 import 语句。
如下面的示例程序中所示:
% 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").