╮(╯3╰)╭

虽然不太明白,但是好厉害啊

Elixir中被移除的模块

最近一段时间为了学习Elixir,不停的在翻阅中英文的书籍、文章和博客。确实学到不少,不过也有些东西确实让我迷惑了一阵子,比如《Elixir程序设计》一书的第8章,着实吓了我一跳,「字典:散列表、散列字典、关键字列表、集合与结构体」,这么多的数据结构,看起来都差不多,一讲到关键部分,书里说的就不甚明了,隔靴搔痒。更诡异的是,还有一些教程,压根就没提到散列字典,还有的文章,甚至出现了=MapSet=这种东西。

怎么回事呢。

作为一门年轻的语言,Elixir在不停的进化,随着版本升级,语言特性也在不断的更新。所以,包括《Elixir程序设计》在内的很多译作与文章,已经落后于语言的发展了。这再一次的说明了,关注CHANGELOG是多么的重要…

目前Elixir的版本是1.4.2,整理一下目前我关注到的一些被移除的模块

总结一下,目前Elixir中的几种常用数据结构和操作它们的模块如下:

数据结构 操作模块 被移除的模块
Tuple Tuple  
Keyword list Keyword Dict
(Linked) List List  
Map Map Dict, HashDict
Set MapSet Set, HashSet

需要注意的是,并不是只有上表中列出来模块才能操作对应的数据结构,比如=Enum=模块能够同时操作=Keyword list=、=List=、=Map=。原因是这三种数据结构都实现了Enumerable=协议(protocol)=,而=Enum=模块可以对所有实现了该协议的类型进行操作。=协议=是Elixir实现=多态=的手段,感觉和=Clojure=中同名的=协议=非常接近,也类似于Java中的=Interface=。

除了移除模块,Elixir还加入了一些新的特性,我目前知道的用起来比较爽的有:

Comments

comments powered by Disqus