erlang學習記錄

記錄與映射組

記錄(record)

記錄實際上是元組的另外一種形式。經過使用記錄,能夠給元組裏的各個元素關聯一個名稱。java

記錄使用方法

經過記錄命名元組裏的元素:

-record(Name,{
    Key1 = Default1,
    Key2 = Default2,
    ...
    key3,
})

建立記錄

#Name{Key1=Val1,Key2=Val2...}. % 全部的鍵都是原子

提起記錄字段

用模式匹配操做符

映射組

映射組是鍵值對的關聯性集合。鍵能夠是任意的Erlang數據類型。(c++/java裏的map,哈希表)。c++

#{ Key1 Op Val1,Key2 Op Val2,...}

Op能夠是=>或者:=

=>能夠更新現有鍵的值,若是現有鍵不存在則建立新的鍵。
:=只能用來更新現有鍵的值,若是鍵不存在則報錯。函數

record或者有幾個參數寫幾個,咱們習慣這樣
map不是不行,只不過1)受到版本限制;2)須要用註解的形式告訴使用者能夠填哪些參數;3)萬必定義和使用時寫的不一樣名字,不能經過編譯器來發現問題
由於是非靜態類型語言,原本編譯期內發現問題的機會已經減小不少了,還處處是map,就更難經過編譯器發現問題了~
map有個好處,record沒有的,是若是用map代替record,那麼就不存在record改了線上不能熱更的問題~:D
map我認爲應該用在不肯定參數的場合;而若是是參數肯定的,可是可填可不填,其實用map, record, 參數列表,沒什麼區別,都是要去判斷~code

順序程序的錯誤處理

異常錯誤是系統內部發生錯誤,或者經過在代碼裏顯式調用exit(Exception)、throw(Exception)或error(Exception)時發出的信息。
典型內部錯誤有進程

  • 模式匹配錯誤
  • 用錯誤類型的參數調用函數
  • 用帶有錯誤類型的參數調用內置函數

拋異常的三種函數

  • exit(Why). 通常用於終止當前進程
  • error(Why). 指示「崩潰性錯誤」,也就是調用者沒有準備好處理的很是嚴重的問題,與內部錯偏差很少。
  • throw(Why). 拋出一個調用者有可能想要捕捉的異常錯誤。

捕捉異常的方式

  • 一、把拋出異常的調用函數封裝在try...catch表達式裏
try FunOrExperssionSeq of
    Pattern1[when guard1] -> Experssions1;
    Pattern2[when guard2] -> Experssions2;
    ...
catch
    ExceptionType1:Expattern1 [when ExGuard1] -> ExExpressions1;
    ExceptionType2:Expattern2 [when ExGuard2] ->ExExpressions2;
    ...
after 
    AfterExperssions
end
  • 二、把調用封裝在catch表達式裏
catch FunOrExperssionSeq

二進制與位語法

類型

  • spec :類型規範
  • type :類型聲明
相關文章
相關標籤/搜索