繼續前面說列表。
列表裡面的元素,第乙個成為head,head之後的都叫tail。用erlang的內建方法看一下:
> hd([1,2,3,4]).為什麼要這樣呢?因為列表的指標是在頭部的,對頭部進行操作是最快捷和高效的。1> tl([1,2,3,4]).
[2,3,4]
使用豎線| 能快速區分頭部和尾部:
> [h|t]=[1,2,3,4].豎線運算子還能把兩個列表連在一起:[1,2,3,4]
> h.
1
> l = [3,3,4].不過豎線後面必須是乙個列表:[3,3,4]
> ll = [1,1,1|l].
[1,1,1,3,3,4]
> [66,77|88].六,列表推導[66,77|88]
> [66,77|[88]].
"bmx"
和python一樣,erlang也有列表推導式list comprehensives。
這個語法比較簡單,我們看幾個例子:
> [2*n || n <- [1,2,3,4]].
[2,4,6,8]
> [x+y || x <- [1,2], y <- [2,3]].
[3,4,4,5]
> weather = [, , , , , ].
[, ,
, ,, ]
> foggyplaces = [x || <- weather].
[london,boston]
七,二進位制
erlang對二進位制的操作也提供了一些方法。
位元是由兩個小於號和兩個大於號包裝的<<>>,每個元素包含乙個冒號,元素間用逗號分開:
> color = 16#f09a29.位元也滿足模式匹配:15768105
> pixel = <>.
<<240,154,41>>
> pixels = <<213,45,132,64,76,32,76,0,0,234,32,15>>.這裡暫不介紹二進位制的左移和右移,以及位操作。<<213,45,132,64,76,32,76,0,0,234,32,15>>
> <> = pixels.
** exception error: no match of right hand side value <<213,45,132,64,76,32,76,0,0,234,32,15>>
> <> = pixels.
<<213,45,132,64,76,32,76,0,0,234,32,15>>
> <> = <>.
<<213,45,132>>
> r.
213
八,二進位制推導
二進位制語法也有推導式,我們簡單看幾個例子:
> [ x || <> <= <<1,2,3,4,5>>, x rem 2 == 0].ok,就先這些吧。[2,4]
> pixels = <<213,45,132,64,76,32,76,0,0,234,32,15>>.
<<213,45,132,64,76,32,76,0,0,234,32,15>>
> rgb = [ || <> <= pixels ].
[,,,]
erlang的強資料型別
在mailist中,一位朋友表示疑問,為什麼下面的語句提示出錯?erlang的執行時資料繫結有什麼特殊規則?file open test.file write,raw,提示badarg,引數錯誤。其實不是執行時繫結有什麼問題,而是math pow 2返回的資料型別為float,而file open ...
21 erlang資料型別
erlang資料型別可以分為以下7大類 1 數值number 包括整形,浮點型,還有 char 進製表示法base value.2 元組term 由 包含的各種資料結構,統稱元組 3 列表 和字串 term1,termn 當然字串也屬於列表的以一種,a a 97 ab a,b 97,98 注意字串的...
erlang的簡單資料型別
整數 erlang中的整數大小是沒有限制的,只與機器的可用記憶體有關 base value表示基數不是10的整數。base是乙個介於2 32 version 6.1.7600,最大值不同的版本可能會不一樣 character表示ascii值。如,a的整數值是97.可以通過is integer 函式來...