【IT168 技术文档】常量是Erlang中的一种数据类型。常量以小写字符开头,例如:charles、centimeter、inch等。常量仅仅只是一个简单的名字,不想我们的变量带有自身的值。
键入下面的程序到tut2.erl文件中,该程序帮助我们将英尺转换为厘米:
-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.18110
11> tut2:convert(7, centimeter).
17.7800
注意我们这里使用了十进制的数值(浮点类型),而并没有任何显式的的声明,但是我猜想你们是可以应付这种情况的。
看一下我们键入其他东西会发生什么情况(除了inch和centimeter之外的):
13> tut2:convert(3, miles). =ERROR REPORT==== 8-Oct-2006::22:52:46 === Error in process <0.25.0> with exit value: {function_clause,[{tut2,convert, [3,miles]},{erl_eval,expr,3},{erl_eval,exprs,4},{shell,eval_loop,2}]} ** exited: {function_clause,[{tut2,convert,[3,miles]}, {erl_eval,expr,3}, {erl_eval,exprs,4}, {shell,eval_loop,2}]} **
这里有两部分被称为子句的内容存在于convert函数中,但是miles并不是这两部分中的其中一部分。于是Erlang系统不能成功的匹配函数中的子句调用,于是我们就看到了上面的出错提示function_clause消息。上面的输出看上去是“典型的一团糟”,但是经过我们认真的观察,我们可以清楚的直到代码中到底是发生了什么。