erlang学习记录
记录与映射组
记录(record)
记录其实是元组的另一种形式。通过使用记录,可以给元组里的各个元素关联一个名称。
记录使用方法
通过记录命名元组里的元素:
-record(Name,{ Key1 = Default1, Key2 = Default2, ... key3, })
创建记录
#Name{Key1=Val1,Key2=Val2...}. % 所有的键都是原子
提起记录字段
用模式匹配操作符
映射组
:
映射组是键值对的关联性集合。键可以是任意的Erlang数据类型。(c++/java里的map,哈希表)。
#{ Key1 Op Val1,Key2 Op Val2,...}
Op可以是=>
或者:=
=>
可以更新现有键的值,如果现有键不存在则创建新的键。 :=
只能用来更新现有键的值,如果键不存在则报错。
record或者有几个参数写几个,我们习惯这样
map不是不行,只不过1)受到版本限制;2)需要用注解的形式告诉使用者可以填哪些参数;3)万一定义和使用时写的不同名字,不能通过编译器来发现问题
因为是非静态类型语言,本来编译期内发现问题的机会已经减少很多了,还到处是map,就更难通过编译器发现问题了~
map有个好处,record没有的,是如果用map代替record,那么就不存在record改了线上不能热更的问题~:D
map我认为应该用在不确定参数的场合;而如果是参数确定的,但是可填可不填,其实用map, record, 参数列表,没什么区别,都是要去判断~
顺序程序的错误处理
异常错误是系统内部发生错误,或者通过在代码里显式调用exit(Exception)、throw(Exception)或error(Exception)时发出的信息。
典型内部错误有
- 模式匹配错误
- 用错误类型的参数调用函数
- 用带有错误类型的参数调用内置函数
抛异常的三种函数
exit(Why).
一般用于终止当前进程error(Why).
指示“崩溃性错误”,也就是调用者没有准备好处理的非常严重的问题,与内部错误差不多。throw(Why).
抛出一个调用者有可能想要捕捉的异常错误。
捕捉异常的方式
- 1、把抛出异常的调用函数封装在try...catch表达式里
try FunOrExperssionSeq of Pattern1[when guard1] -> Experssions1; Pattern2[when guard2] -> Experssions2; ... catch ExceptionType1:Expattern1 [when ExGuard1] -> ExExpressions1; ExceptionType2:Expattern2 [when ExGuard2] ->ExExpressions2; ... after AfterExperssions end
- 2、把调用封装在catch表达式里
catch FunOrExperssionSeq
二进制与位语法
类型
spec
:类型规范type
:类型声明
相关推荐
chensen 2020-11-14
lwnylslwnyls 2020-11-06
ATenhong 2020-10-15
yanzhelee 2020-10-13
佛系程序员J 2020-10-10
guojin0 2020-10-08
佛系程序员J 2020-10-08
bluewelkin 2020-09-16
wwzaqw 2020-09-04
zhongdaowendao 2020-09-02
favouriter 2020-08-18
奎因amp华洛 2020-08-15
一青年 2020-08-13
千锋 2020-08-10
nangongyanya 2020-08-09
dongxurr 2020-08-08
明天你好 2020-08-03
kyelu 2020-08-03
Ashes 2020-08-03