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]的值也不会变。