erlang的資料型別 (2)

2021-08-27 20:10:07 字數 1721 閱讀 3461

繼續前面說列表。

列表裡面的元素,第乙個成為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].     

[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 ].

[,,,]

ok,就先這些吧。

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 函式來...