learn you some erlang-startting out(for real)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34376435/article/details/89248272

网上看到有这本书,看了下感觉不错,重新复习下erlang的基础。
startting out(for real)章节主要介绍了erlang的基本数据结构,有些特性是最初学习就经常犯错的。
1.Numbers
首先得话就是除法操作,erlang现在这个版本的话使用/符号返回的是浮点型的数字,如果想要整除或者取余是需要使用div,rem的。然后erlang里面的数字只有整形和浮点型,整形的话在erlang里面是没有最大最小值的。也可以使用其他进制来表示一个数组,比如2#101010=42.
2.Atom
erlang的原子是有最大数量限制的,而且也不会被gc,所以别无限制的生成atom。单引号括起来的字符串也是可以作为原子的,比如‘ADMDM DASDIWI ASD’,‘ww’=ww
3.Tuples
Tuple在erlang里面也是挺常用的,之前比较困惑的就是{1,_}={1,2,3},这个是错误的,_不能匹配到2,3,必须两边个数相等才行
4.List
List最蛋疼的地方就是[97,98,99]=“abc”,也就是说erlang里面的string其实全是list,当List里面的数字都是可打印的字符时它就会打印字符,erlang里面是没有真正的字符串的,至于怎么解决,后面会提到。
然后就是++,–操作,[1,2,3]–[1,2]–[2]=[2,3],这些操作都是右结合的。
然后就是困惑了很久的[Head|Tail],这个Tail是个List,之前一直搞错了,Tail是个List才能正常的用一些list的函数。
然后是列表解析,[X || X <- [1,2,3,4,5,6,7,8,9,10], X rem 2 =:= 0],像是这样,后面的X rem 2=:=0是加的限制条件,限制条件必须返回布尔型.[X||{A,c}<-[{b,c},{e,c},{a,b}]],也可以像这样过滤数据
5.比特语法
基本组成<<Seg1,Seg2…Segn>>
Seg1=Value:Size/TypeSpecifierList
TypeSpecifierList=Type-Signedness-Endianness-Unit
这个最令我困惑的就是这个Size和Unit的区别,它们两个相乘就是这个Seg所拥有的大小,这个Unit看有的地方说是为了字节对齐设置的。其他的就难得写了,erlang手册上也有

猜你喜欢

转载自blog.csdn.net/qq_34376435/article/details/89248272