有人可以解釋爲什麼在Elixir中需要「捕獲操作符」,表示爲&符號前綴?在其他語言中是不是:爲什麼我們需要在Elixir中使用「捕獲操作符」函數?
Python 3.6.0 |Anaconda 4.3.0 (64-bit)| (default, Dec 23 2016, 12:22:00)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux
>>> def double(x):
... return(x + x)
...
>>> double(2)
4
>>> dbl = double
>>> dbl(2)
4
這個作品在仙丹一樣,顯然是:
iex(2)> double = fn x -> x + x end
#Function<6.118419387/1 in :erl_eval.expr/5>
iex(3)> double.(2)
4
iex(4)> dbl = double
#Function<6.118419387/1 in :erl_eval.expr/5>
iex(5)> dbl.(2)
4
那麼,爲什麼,例如here,做我們永遠需要的,如果該函數使用捕獲操作已經可以在沒有運營商的情況下通過?函數的普通舊名稱是否已經「捕獲」它?
iex(10)> Enum.map([1, 2, 3], double)
[2, 4, 6]
基本上我不明白的&捕獲操作和優勢是什麼它提供的使用情況。
也許它是這樣的,你可以通過'/ 1''/2'等後綴表示法來包含參數的數量,否則它會被解釋爲一個分割。在函數式語言中,當參數的數量和類型改變時,函數可以是完全不同的聲明。 – GavinBrelstaff