发布于 2016-01-02 10:34:41 | 117 次阅读 | 评论: 0 | 来源: PHPERZ

这里有新鲜出炉的精品教程,程序狗速度看过来!

Elixir 函数式编程语言

Elixir 是一种函数式编程语言,建立在Erlang虚拟机之上。它是一种动态语言,灵活的语法与宏支持,利用Erlang的能力来构建并发、分布式、容错应用程序与热代码升级。


起因

2016年第一天就在忙着写代码,对Scala的Play Framework,Java的SpringMVC和Clojure上的compojure的使用略感疲劳,配置真的有点太多了。

无意中看到了Phoenix这个项目,该项目是使用Elixir语言开发,颇有Ruby on Rails的意思。

当然使用框架,当然就需要找例子,所以发掘出了elixir-china这个项目,然后进行了一些测试,深感代码之精简,部署之方便。

但是看到其中有这么一段代码

  def changeset(user, params \\ nil) do
    user
    |> cast(params, ~w(name email admin password), ~w(score))
    |> validate_length(:name, min: 3)
    |> validate_length(:password, min: 6)
    |> unique_constraint(:name, name: :users_name_key)
    |> unique_constraint(:email, name: :users_email_index)
  end

对其中的|>操作符号不是很明白啥意思。

管道的思想

经过一些查找,Elixir称|>管道操作符号,就是将上一个操作的结果作为参数,向下传递。

def pp(x) do 
    :io_lib.format("~p", [x])
    |> :lists.flatten
    |> :erlang.list_to_binary
end

如此段代码可以翻译为这样的Erlang代码

pp(X) ->
  list_to_binary(lists_flatten(li_lib:format("~p),[X])))

不过需要注意的是,该操作符号是作为第一个参数,而非最后一个参数,传入下一个函数中。



最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务