Elixir 初尝试 1 -- 这里的等号不一样 & 不变的数据

LustrousElixir 2019-06-21

Elixir是个什么鬼

自行百度维基google

Elixir 这里的等号不一样

当等号‘=’不是赋值,而是匹配(match opertator),变得更像断言,更像我们初中开始学代数的时候。
P.S.
^(脱字符),强制让变量的已有值参与匹配

Elixir 函数式编程--不可变的数据 才是好用的数据

编程就是进行数据转换,而不是数据修改。所以我们期待

some_value=[some_object];
print(some_value);
do_something_with(some_value);
print(some_value);

前后两次打印的变量并没有变,应该说此时变量都不能称之为变量,叫它为值更合适些。
而函数则是对值进行变换的引擎,一切魔法所在。

按常规想法,因为elixir的值都是不可变的,所以在进行转换的时候,需要一个副本,涉及到copy,性能很渣吧,NO
原因是既然值都是不变的,直接拿来用就好了。
比如

iex(9)> list1=[2,3,4,1]
[2, 3, 4, 1]
iex(10)> list2 =[6|list1]
[6, 2, 3, 4, 1]

list2 就是直接使用list1作为尾项,用6作为首项生成的[2,3,4,1]的值也不会变。

相关推荐

LustrousElixir / 0评论 2013-02-25

探手摘星辰 / 0评论 2015-08-02