初学,留记,以便日后总结。
1.基本概念:变量不变,模式匹配,原子,元组,列表。
2.要掌握的模型:服务器-客户端模型(行模式,自由模式)。
3.重要的应用:协议解析,针对一个协议,写一个函数。
4.调试技巧:哪里出问题,先用io:format("Error info ~p~n", [Bin]),定位错误(注意前后都要打印,才能获得准确的位置,不注意后面,有可能会把正确的那部分误以为是错误的),再把出问题的函数注掉。运行确定其他部分没有错误。再把问题函数单独提取出来,在shell中运行。
5.程序错误定位准则:
a.前面打印正常,后面不正常,那一定是后面那部分有某个地方出问题了。
b.在疑似错误的地方的尾部加上打印语句,如果真的是这部分错误,那么尾部的打印信息不会显示;如果尾部的打印信息显示了,那这部分就是没问题的。你得重新定位错误点。
6.变量的定义原则:
类型前缀+变量名,用下划线隔开,如:B_reply
I int;
B binary();
L list();
S string();
T tuple;
P pid | socket | file handle ; (资源类型)
U unknow;
7.关于返回值:
尽量用Tuple作返回值,按照不同情况,返回不同值,使用case of句式。
8.分号和逗号:
a.定义一组函数或变量(准确的说是匹配模式),有选择的执行,用分号";",一般"->"后面跟分号,分号有“或”的意思。
b.逗号","表示顺序执行,类似java中的分号。
c.句号"."表示结束,类似java中的"}",java中的"{"在erlang中相当于"->"
1.基本概念:变量不变,模式匹配,原子,元组,列表。
2.要掌握的模型:服务器-客户端模型(行模式,自由模式)。
3.重要的应用:协议解析,针对一个协议,写一个函数。
4.调试技巧:哪里出问题,先用io:format("Error info ~p~n", [Bin]),定位错误(注意前后都要打印,才能获得准确的位置,不注意后面,有可能会把正确的那部分误以为是错误的),再把出问题的函数注掉。运行确定其他部分没有错误。再把问题函数单独提取出来,在shell中运行。
5.程序错误定位准则:
a.前面打印正常,后面不正常,那一定是后面那部分有某个地方出问题了。
b.在疑似错误的地方的尾部加上打印语句,如果真的是这部分错误,那么尾部的打印信息不会显示;如果尾部的打印信息显示了,那这部分就是没问题的。你得重新定位错误点。
6.变量的定义原则:
类型前缀+变量名,用下划线隔开,如:B_reply
I int;
B binary();
L list();
S string();
T tuple;
P pid | socket | file handle ; (资源类型)
U unknow;
7.关于返回值:
尽量用Tuple作返回值,按照不同情况,返回不同值,使用case of句式。
8.分号和逗号:
a.定义一组函数或变量(准确的说是匹配模式),有选择的执行,用分号";",一般"->"后面跟分号,分号有“或”的意思。
b.逗号","表示顺序执行,类似java中的分号。
c.句号"."表示结束,类似java中的"}",java中的"{"在erlang中相当于"->"