erlang 语言学习笔记

不知道这个语言以后的发展前景怎么样, 现在公司要用, 写个记录,供以后学习的人参考。


module(math1).

-export([factorial/1]).

作用:

第一个是声明该模块可以被模块外部访问,

导出函数的意思是说明, 该函数可以被外部直接调用 相当于类中的public, 而没有被声明为export的函数, 则等同于private只能被该模块内部访问

factorial/1:这句话的意思是该factorial函数只有一个参数

变量总是以大写字母开头的。

_”下划线,代表特殊的匿名变量或无所谓变量, 可以充当占位符

Erlang 提供了多进程原语:

spawn用于启动一个并行计算(进程);

Send 向一个进程发送一条消息,而receive从一个进程中接收一条消息

Pid ! Msg语法用于消息发送, Pid是代表一个进程的身份的表达式或者常量,Msg是要发送的消息,如

Pid ! {a, 12}

意思是将消息{a, 12}发送至以pid为标识符的进程,在发送前,消息中的所有的参数都先被求值,因此:

Foo(12) ! Math2:aarea({square, 5}). 表示对foor12)求值,必须返回一个有效的进程标识符, 并对Math2:aarea({square, 5})求值, 然后将计算结果作为一条消息发送给进程。

条件表达式:

Atom(X)  x是一个原子式

ConstantX) x不是列表或元组

FloatX) X是一个浮点数

IntegerX) x是一个整数

ListX) x是一个列表或者元组(【】)

Number X是一个整数或浮点数

PidX) x是一个进程标识符

PortX) x是一个端口

ReferenceX) x是一个引用

TupleX) x是一个元组

BinaryX) X是一个二进制数据

除此之外还有其他的一些项目比较运算符,特别注意的是

X/=Y   x不等于类型是coerce

X ==Y   X等于Y类型是exact

X =/=Y  X不等于类型是exact

其他的比较运算符都是coerce类型。

特别的:

如果比较运算符的两个参数都是数值类型,且运算符类型为coerce,那么如果一个是integer, 另一个是float,则integer的就转换为float再进行比较。

因此5.0 == 1+4,为真,而5.0 == 4+1 是假


posted @ 2011-08-10 09:05  willier  阅读(161)  评论(0)    收藏  举报