Elixir 函式程式設計的幾個基本特性

2021-09-19 08:21:33 字數 1457 閱讀 1147

有了這個基礎知識, 下面對於高階函式,閉包的理解就更容易了.

elixir不僅允許你把函式放入變數, 還允許你把函式作為引數傳遞給另乙個函式. 在數學中, 乙個高階函式通常是乙個接受乙個或多個函式作為輸入或者同時也返回乙個函式作為輸出的函式. 這個特性使elixir語言非常強大.

iex> square = fn x -> x * x end

#function<6.17052888 in :erl_eval.expr/5>

iex> enum.map(1..10, square)

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

上面定義了乙個匿名函式, 它接受乙個數字, 求平方值並賦值給square變數. 然後使用enum.map對數字列表1..10中的每乙個數字計算平方值.

注: 關於1..10請參考 range.

高階函式參考資料:

閉包有如下幾個特性:

iex(1)> outside_var = 5

iex(2)> print = fn() -> io.puts(outside_var) end

iex(3)> outside_var = 6

iex(4)> print.()

5

可以看到, 即使修改了outside_var的值, 但結果任然是5.

正是由於這個特性使erlang消除了併發程式設計中同一時刻訪問全域性變數的競太條件, 這也是erlang作為開發併發系統的首選語言之一.

看下面的例子:

iex> tuple = 

iex> put_elem(tuple, 1, "world")

iex> tuple

是的, 你仍能夠給乙個變數重新賦值.

defmodule assignment do

def change_me(string) do

string = 2

endend

正常情況下給變數繫結乙個值(或者在其他語言中成為賦值)操作如下:

name = "developerworks"

這裡的name為乙個變數, "developworks"為其值.

那麼關於^, 乙個更容易理解的方式, 可以認為是^name是獲取name的值. 並且^符號只能用在模式匹配中.

檔案操作的幾個基本函式

檔案操作中的函式要注意是對檔案進行操作,而不是對輸出螢幕進行操作 在對檔案進行操作前,要先開啟函式 fopen 1,對檔案進行寫入時有以下函式 fputc fputs fwrite fprintf 2,對檔案進行讀取時有以下函式 fgetc fgets fread fscanf 3,對檔案操作完成後...

程式設計的幾個基本原則

1 開閉原則 對擴充套件開放,對修改關閉 也就是用抽象構建框架,用實現擴充套件細節 2 單一職責 乙個類實現的功能要盡可能單一,避免像乙個函式實現兩個功能這樣的設計 這時最後重構成兩個函式 3 黎克特制替換原則 不要破壞繼承體系,如正方形和長方形類,如果把正方形當做長方形的子類 正方形只需定義乙個邊...

網路程式設計 基本函式

位元組排序函式 include 返回網路位元組序的值 uint16 t htons uint16 t host16bitvalue uint32 t htonl uint32 t host32bitvalue 返回主機位元組序的值 uint16 t ntohs uint16 t net16bitva...