答案:進行數據轉化,獲得你想要的數據的的,舉個栗子
你有你們考試的成績單(數據),可是你想排個序(轉化),獲得一個成績排名(想要的數據)。
這個時候你可能須要一個排序的函數了。linux
答案:函數
匿名函數用fn關鍵字建立,形如fetch
fn parameter-list -> body parameter-list -> body ... end
命名函數必須寫在模塊裏面,用def聲明,形如命令行
defmodule ModuleName do def functionName(parameter-list) do ... end end
其中body,以及do...end的部分就是函數體(代碼塊)code
假設咱們已經寫好一個模塊叫moduleA,而且把它保存爲moduleA.exs,裏面有一個模塊moduleA以及方法functionB,如何執行方法呢?排序
初始進入命令行,未進入iex數學
iex moduleA.exs iex>moduleA.functionB parameter-list
已進入iexio
iex> c "moduleA.exs" iex>moduleA.functionB parameter-list
函數就是作各類數據轉換,轉換的時候咱們須要依據必定的規則(流程控制)進行數據的變換(運算)
其中流程控制有咱們以前提到過的模式匹配,哨兵子句,還有咱們在其餘語言裏面已經很熟悉的if,但此次都不會具體聊這些。
我其實只想聊一下,怎麼讓函數變漂亮
假設咱們選擇有幾個函數,order_by_grade,fetch_top_ten,select_by_subject,
已經一份未排名的各科成績單 grade_list,要獲得數學成績前十名的信息
大概咱們會這麼作編譯
fetch_top_ten(order_by_grade(select_by_subject(math)))
這裏想給你們拋出另外一個優雅些的方式,對你不笨就是管道function
select_by_subject(math) |>order_by_grade() |>fetch_top_ten()
管道是一種在linux常見的用法,把一個命令的輸出結果,做爲下一個命令的輸入在咱們這裏,就是|>運算符得到左邊表達式的結果,並將其做爲右邊函數的第一個參數。由於運算符優先級的問題(懷戀clojure),適當的時候須要對管道運算符先後的參數使用括號。