从零冲击Erlang(三)

今天我要来好好的学习一下Erlang中的基本结构:元组。

在一些Erlang英文文档或者网络上的关于Erlang博客中出现的单词tuple指的就是元组。

元组的定义:元组是Erlang项式的定长的有序序列。元组用大括号{}来表示,来看几个例子

{1,2,3}

{one,two,three,four}

{from,"Russia","with love"} //题外话,”来自俄罗斯的爱情“ 007主题曲,很好听

{} //空的


就像上面这样简单,这些就是元组,最基本的,最简单的元组。

同时,元组里面也可以套入元组

{complex,{nested,"structure",{here}}} //这个元组里面套了一个,那一个里面又套了一个


总结一下元组:元组中出现的元素可以是同一类型,也可以是不同的数据类型,这些元素本身也可以是元组或者其他数据类型

在此基础上,Erlang有个标准约定:用原子作为第一个元素来标记元组数据的类型,如{size,42},{position,5,2},称为标记元组(tagged tuple)

我举个例子

假如我要表示一个人的信息(姓名,年龄,性别),我可以用元组去表示,{”Michael“,23,"male"},{"Tina",27,”female“},这样就行了。但是感觉很散,如果我把整个元组作为参数传递给函数,函数如何检查我传给它的参数是不是符合它事先约定的要求你,总不能用姓名”MichaelMa“或者年龄23或者性别”male“来判断吧。所以需要一个标记来标识这个元组,告诉别人这个元组的类型,进而可以这样优化,{person,”Michael“,23,"male"} , {person,"Tina",27,”female“},你看这样是不是感觉更好了,函数就可以通过判断第一个元素的类型来直接判断参数合不合法。同时把元组作为函数参数返回也是可以的。


正如C中的struct或者Java中的对象一样,元组是在Erlang中构造符合数据结构或一次性返回多个结果值的主要手段。

在实际使用中,常记使用标记元组有助于快速提升元组的使用技巧。


列出参考资料:

《Erlang/OTP并发编程实战》第二章


发布了87 篇原创文章 · 获赞 21 · 访问量 16万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章