您的位置:首页 > 其它

Elixir &符号是什么意思?

2015-01-04 12:46 369 查看
在elixir中创建短小的帮助函数是非常频繁的工作,elixir提供了一个方便的机制,让我们先使用,然后再解释一下他的意义。

iex> add_one = &(&1 + 1) # same as add_one = fn (n) -> n + 1 end
#Function<6.17052888 in :erl_eval.expr/5>
iex> add_one.(44)
45
iex> square = &(&1 * &1)
#Function<6.17052888 in :erl_eval.expr/5>
iex> square.(8)
64
iex> speak = &(IO.puts(&1))
&IO.puts/1
iex> speak.("Hello")
Hello
:ok

&
符号将里面的表达式转换成函数。在表带是里面的替换符
&1
,
&2
等此类标量,代表函数的第一个参数,第二个参数等,所以
&(&1 + &2)
将会转换成
fn a, b -> a + b end


elixir是足够简介的,例如
&(IO.puts(&1))
会生成匿名函数
fn x -> IO.puts(x) end
。Elixir注意到函数体仅仅是简单的调用IO模块的puts函数,elixir优化该匿名函数,可以使用
&IO.puts/1


更多实例:

iex> l = &length/1
&:erlang.length/1
iex> l.([1,3,5,7])
4
iex> len = &Enum.count/1
&Enum.count/1
iex> len.([1,2,3,4])
4
iex> m = &Kernel.min/2 # This is an alias for the Erlang function
&:erlang.min/2
iex> m.(99,88)
88
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: