erlang第五天总结

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里面将这个变量作为返回值绑定给新变量



猜你喜欢

转载自blog.csdn.net/boiled_water123/article/details/80515208