Erlang 程式設計/位語法
外觀
Erlang 允許我們使用位串。它們具有以下形式
<<Value:Bitlength>> or <<v1:length1,v2:length2,...>>
預設位長度為 8。
65> <<1:8>> == <<1>>. true
位串中使用的整數可以在左側用零填充。
66> <<1:8>> == <<00000001>>. true
一些位串具有字串表示形式。
38> <<00011111>>. <<"g">>
請記住,使用預設位長度會導致過大整數被截斷!
39> <<"g">> == <<103>>. true 40> <<00011111>> == <<103>>. true 41> <<00011111:8>> == <<103>>. true 42> <<00011111:16>> == <<43, 103>>. true 43> <<00011111:24>> == <<0, 43, 103>>. true 44> <<00011111:32>> == <<0, 0, 43, 103>>. true
我們無法使用整數指定單個位。我們必須使用位長度為 1 的值。
67> <<0101>>. <<"e">> 68> <<1:1, 0:1, 1:1>>. <<5:3>> 69> <<0101>> == <<1:1, 0:1, 1:1>>. false 70> <<101>> == <<1:1, 0:1, 1:1>>. false 71> <<1:1, 0:1, 1:1>> == <<5:3>>. true 72> <<0:5, 1:1, 0:1, 1:1>>. <<5>> 73> <<0:5, 1:1, 0:1, 1:1>> == <<0101>>. false
我們可以使用模式匹配選擇位串的一部分。
45> <<H:2,T:6>> = <<"A">>. <<"A">> 46> H. 1 47> T. 1 86> <<01000001:8>> == <<"A">>. true 87> <<1:2,1:6>> == <<"A">>. true 88> <<65>> == <<"A">>. true
我們可以將 X 與值匹配。
95> <<1:2,X:6>> = <<"A">>. <<"A">> 96> X. 1
我們無法將 Y 與位長度匹配。
97> <<1:2,1:Y>> = <<"A">>. ** 1: variable 'Y' is unbound **
我們可以使用繫結變數作為位長度。
98> Z = 6. 6 99> <<1:2,X:Z>> = <<"A">>. <<"A">> 100> X. 1