Erlang的備忘技巧

一、and or 和andalso orelse的區別函數

and和or會計算兩邊的表達式,而andalso和orelse的求值採用短路機制,好比exp1 andalso exp2,當exp1返回false以後,就不會去求值 
exp2,而是直接返回false,而exp1 and exp2會對exp1和exp2都進行求值,or與orelse也相似。spa

二、在Erlang中小於等因而用=<表示,而不是通常語言中的<=語法,一樣,不等於都是用/號,而不是!,好比/=、=/=。code

三、Erlang的保留字有:orm

after and andalso band begin bnot bor bsl bsr bxor case catch cond div end fun if let not of or orelse query receive rem try when xorrem

基本都是些用於邏輯運算、位運算以及特殊表達式的符號字符串

四、模塊的預約義屬性: 
-module(Module).    聲明模塊名稱,必須與文件名相同 
-export(Functions).   指定向外界導出的函數列表 
-import(Module,Functions).   引入函數,引入的函數能夠被看成本地定義的函數使用 
-compile(Options).     設置編譯選項,好比export_all 
-vsn(Vsn).         模塊版本,設置了此項,能夠經過beam_lib:version/1 獲取此項信息 
能夠經過-include和-include_lib來包含文件,二者的區別是include-lib不能經過絕對路徑查找文件,而是在你當前Erlang的lib目錄進行查找。it

五、宏,定義常量或者函數等等,語法以下: 
-define(Const, Replacement). -define(Func(Var1,...,VarN), Replacement). 
使用的時候在宏名前加個問號?,好比?Const,Replacement將插入宏出現的位置。系統預約義了一些宏: 
?MODULE 表示當前模塊名 
?MODULE_STRING 同上,可是以字符串形式 
?FILE 當前模塊的文件名 
?LINE 調用的當前代碼行數 
?MACHINE 機器名 
Erlang的宏與C語言的宏很類似,一樣有宏指示符,包括:io

  • -undef(Macro).編譯

  • 取消宏定義import

  • -ifdef(Macro).

  • 當宏Macro有定義的時候,執行如下代碼

  • -ifndef(Macro).

  • 同上,反之

  • -else.

  • 接在ifdef或者ifndef以後,表示不知足前者條件時執行如下代碼 

  • -endif.

  • if終止符

假設宏-define(Square(X),X*X).用於計算平方,那麼??X將返回X表達式的字符串形式,相似C語言中#arg

相關文章
相關標籤/搜索