UP | HOME

内置函数

内置函数是指那些出于某种需求而内置到 Erlang 虚拟机中的函数:

判断是否为闰年。如果可以被 400 整除,则为闰年。为了判断,先将年份除以 400,再用 trunc 函数移去小数部分。然后,再将结果乘以 400 判断是否得到最初的值。例如,以 2004 年为例:

2004 / 400 = 5.01
trunc(5.01) = 5
5 * 400 = 2000

2000 年与 2004 年不同,2004 不能被 400 整除。而对于 2000 来说:

2000 / 400 = 5.0
trunc(5.0) = 5
5 * 400 = 2000

所以 2000 年为闰年

用 trunc 测试年份是否可以被 100 或者 4 整除:

trunc(Year / 400) * 400 == Year ->
    leap;

其实,在 Erlang 中可以使用内置函数 rem 来求得余数,这样会简单很多。示例如下:

Year rem 400 == 0 ->
    leap;

Erlang 中除了 trunc 之外,还有很多的内置函数,在 shell 中测试一些内置函数:

1> trunc(5.6). 
5

2> round(5.6). 
6

3> length([a,b,c,d]).
4

4>  float(5).
5.0

5>  is_atom(hello).
true

6> is_atom("hello").
false

7>  is_tuple({paris, {c, 30}}).
true

8>  is_tuple([paris, {c, 30}]).
false

Erlang 的内置函数中 只有一部分可以用在 guard 中,并且不可以在 guard 中使用自定义的函数

因为这不能保证 guard 没有副作用!!!

下现这些函数不可以用在 guard 条件测试中:

9> atom_to_list(hello). 
"hello"

10> list_to_atom("goodbye").
goodbye

11> integer_to_list(22).
"22"
这三个内置函数可以完成类型的转换

要想在 Erlang 系统中(非 Erlang 虚拟机中)实现这样的转换几乎是不可能的

Next:高阶函数

Previous:条件判断

Home:顺序编程