本文共 611 字,大约阅读时间需要 2 分钟。
1.进程里的变量是私有的,erlang shell本身是一个进程,所以当打开多个erlang shell执行gen_tcp:conncet返回的Socket是相同,而在每一个erlang shell里面多次调用gen_tcp:connect返回的Socket是不同
2.gen_tcp:recv会阻塞,直到收到消息为止。gen_tcp:recv(Socket,N),每次从Socket里读取N个字节,如果N为0,则返回全部字节。一段二进制数据可以分开几段读,比如先读3个字节 gen_tcp:recv(Socket,3),再读5个字节 gen_tcp:recv(Socket,5) ......直到所有数据读完。{active,false}只能用gen_tcp:recv去接收数据。
3.<<Size:4, Data:Size/binary,...>>如果Size是一个已绑定变量,则可以通过模式匹配获得Data的值
4.可通过模式匹配记录字段或者创建新记录的函数,如下
function(#state{status=S,count=C} = X) ->
X#state{status=start}
5.在if或case里面的变量属于局部变量,如果在if或case外部引用这个变量,编译器会报错,提示这个变量在if或case里面是unsafe,如果真的要用这个变量,可以在if或case里面将这个变量作为返回值绑定给新变量
转载地址:http://nsxlf.baihongyu.com/