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}). 表示对foor(12)求值,必须返回一个有效的进程标识符, 并对Math2:aarea({square, 5})求值, 然后将计算结果作为一条消息发送给进程。
条件表达式:
Atom(X) x是一个原子式
Constant(X) x不是列表或元组
Float(X) X是一个浮点数
Integer(X) x是一个整数
List(X) x是一个列表或者元组(【】)
Number X是一个整数或浮点数
Pid(X) x是一个进程标识符
Port(X) x是一个端口
Reference(X) x是一个引用
Tuple(X) x是一个元组
Binary(X) X是一个二进制数据
除此之外还有其他的一些项目比较运算符,特别注意的是
X/=Y x不等于y 类型是coerce
X =:=Y X等于Y类型是exact
X =/=Y X不等于Y 类型是exact
其他的比较运算符都是coerce类型。
特别的:
如果比较运算符的两个参数都是数值类型,且运算符类型为coerce,那么如果一个是integer, 另一个是float,则integer的就转换为float再进行比较。
因此5.0 == 1+4,为真,而5.0 =:= 4+1 是假

浙公网安备 33010602011771号