数值(number)
双精度表示.并非单精度
2#0101010101001 将这个转换成二进制
16#FFFFFFF 将这个转换成十二进制
<<1,2,3>> 二进制串
元组(tuples)
{} 花括号代表元组
{"1","2"}
{"1",{"2","3"}}
字符串(string)
"111"
列表(list)
[97,98,99]
变成了 'abc' 将ASCll 转换成具体内容
ASCll 具体转换
$a
97
$A
65
Unicode
"\x{1123}"
[4387]
原子(atomic)
任何以小写字母开头的就是原子绑定即不可摘除 如果想以大写'A' 单引号
变量一旦创建不可更改
变量(variable)
a = 5
b = 6
函数(1)
-module(one).
-export([area/1])
area(Shape)->
case Shape of
{rectangle,W,H}-> %%第一个是原子
W*H
{square,W}->
W*W
{circle,R}->
3.14.5926 * R * R
_Any-> #如果都不是 执行这个"_"无用变量处理
argeError
end.
c(当前写入的文件名字)
one:area({rectangle,2,3})
6
one:area({square,3})
4
以上就是通过函数 然后匹配到对应的原子 进行赋值操作
函数(2)
-module(one).
-export([area/1])
area({rectangle,H,W})-> W*H
area({square,W}) -> W*W
area({CIRCLE,R})-> 3.1415926 *R * R
虽然是三个函数 但是也是经过原子进行逐个匹配 查看是对应,如果原子都匹配不到 则会报错
函数(3)
if 条件判断
start(Num)->
if
Num>0 ->ok;
Num<0-> false;
true->true
end.
购物车小例子
--moudle(one).
-export([total/1])
cost(apple)->3;
cost(banana)->3;
cost(peach)->3;
map(F,[H|T])->[F(H)|map(F,T)];
map(_,[]) ->[].
sum([H|T])->H+sum(T);
sum([]) ->0.
total([]) ->0;
total(Shop)->
sum(map(fun({Name,Number})->cost(Name)*Number end,Shop)).
编译
one:total([{apple,2},{ banana,1},{peach,1}])
9
讲解:
1.利用cost语句模式匹配 来匹配当前的属于那个原子
2.total韩式第一次调用的是sum
3.sum做了什么 将头尾分离 然后又开始头尾分离 直到空列表[]然后再交给map做循环处理
Erlang递归处理
tital([])->0;
total([{Name,Nubber}|Other])->
cost(Name)*Number + total(Other).
映射表
#{}
内置函数
register 注册表
register(cache,Pid) 将本次的进程ID原子名为cache 发消息则很方便(进程之间)
Pid!("1","2")
self()
当前发消息的进程
receiv()
接受消息(当前进程)
map 映射表
结合文档 再结合哔哩哔哩李如意视频简单介绍