Erlang入门教程 - 3. 原子

racaljkracaljk

Erlang入门教程 - 3. 原子


在Erlang中原子是另一种数据类型。原子以小写字母开头,比如charles, centimeter, inch。原子只是一个简单的名字,没有任何其他内容。它们不像变量一样还有值。

在tut2.erl中输入下面代码。它可以在inch和centimeter之间来回转换。

-module(tut2).
-export([convert/2]).

convert(M, inch) ->
    M / 2.54;

convert(N, centimeter) ->
    N * 2.54.

编译:

9> c(tut2).
{ok,tut2}

测试:

10> tut2:convert(3, inch).
1.1811023622047243
11> tut2:convert(7, centimeter).
17.78

结果引入小数不解释,希望你能自己搞懂。

我们来看看如果给convert输入centimeter和inch之外的东西会发生什么:

12> tut2:convert(3, miles).
** exception error: no function clause matching tut2:convert(3,miles) (tut2.erl, line 4)

convert函数的两个部分叫做clauses。如上所示,miles没有在函数的任何clause中。Erlang system不能匹配任何clause所以返回错误消息function_clause。shell格式化后的错误消息很nice,除此之外错误消息也会保存在shell历史中,可以调用命令v/1输出。

13> v(12).
{'EXIT',{function_clause,[{tut2,convert,
                                [3,miles],
                                [{file,"tut2.erl"},{line,4}]},
                          {erl_eval,do_apply,5,[{file,"erl_eval.erl"},{line,482}]},
                          {shell,exprs,7,[{file,"shell.erl"},{line,666}]},
                          {shell,eval_exprs,7,[{file,"shell.erl"},{line,621}]},
                          {shell,eval_loop,3,[{file,"shell.erl"},{line,606}]}]}}
文章被以下专栏收录
2 条评论
推荐阅读