值類型
整數,包括十進制(1234)、十六進制(0xcafe)、八進制(0o765)和二進制(0b1010)
浮點數
原子,原子是常量,用于表現某些東西的名字,它以冒號開頭,其后更隨一個原子單詞或者Elixir運算符。我們會大量使用原子來標記值。
區間,被表示為 開始...結束,開始和結束可以是任意類型值。但是,如果你想便利區間中的值,其兩端必須是整數。
正則表達式,寫作~r{regexp}或者~r{regexp}opts
?
系統類型
pid和端口,pid是對本地或者遠端進程的引用,而端口是讀寫資源的引用。
引用
?
收集類型
元組,表示一組有序元素的集合,如同所有的Elixir數據結構,一旦元組被創建就無法修改。如:{ 1, 2 }、{ :ok, 42, "next" }
列表,列表是一個鏈式數據結構,要么為空,要么由首部和尾部組成。首部包含一個值,尾部本身是一個列表。其適合線性遍歷。
關鍵字列表,
散列表,散列表的每個條目的鍵是不同的,而關鍵字列表允許存在相同的鍵。散列表更高效,訪問時同過鍵來訪問值:
states = %{ "AL" => "Alabama", "WI" => "Wisconsin"}states["AL"] # "Alabama"如果是原子類型,還可以使用點符號。 colors = %{ res: 0xff0000, green: 0x00ff00, blue: 0x0000ff }colors[:red] #0x0000ff colors.red #0x0000ff
二進制,
真值
true、false、nil。nil在布爾上下文會當作false對待。true和原子類型:true等價。
運算符
比較運算:a === b #嚴格相等? 1 === 1.0 為假
a !== b #嚴格不等? ? 1 !== 1.0 為真
a == b #值相等 1 == 1.0 為真
a != b ? #值不等 1 != 1.0? 為假
a > b #正常比較
a >= b #正常比較
a < b #正常比較
a =< b #正常比較
布爾運算符:這些運算符優先計算第一個參數的真值。
a or b #a為真則真? 否則求b
a and b
not a
松弛布爾運算符:這些運算符接受任意類型的值,任何除了nil或者false的值都被解釋為真
a || b #若 a 為 truthy 則為 a,否則為 b
a && b #若 a 為 truthy 則為 b,否則為 a
!a
算術運算符:+ - * / div rem
整數除法返回浮點。采用div(a, b)可以求整數結果。rem是求余,其結果符號和第一個參數相同。
連接運算符:binary1 <> binary2 #連接兩個二進制型(二進制包含字符串)
list1 ++ list2? ? ?#連接兩個列表
list1 ++ list2 ? ? #返回list1中有單list2中沒有的元素
in運算符:a in enum