在mailist中,一位朋友表示疑問,為什麼下面的語句提示出錯?erlang的執行時資料繫結有什麼特殊規則?
> = file:open("test.file", [write, raw,
提示badarg,引數錯誤。
其實不是執行時繫結有什麼問題,而是math:pow/2返回的資料型別為float, 而file:open/2中的tuple的第二個element需要型別為integer,因此就出現了badarg錯誤。
修正辦法:可以通過trunc/或者round/1將float轉化為integer(trunc是將小數部分捨棄,而round是四捨五入,具體參看erlang模組), 當然更聰明的辦法就是去掉math:pow/2這樣的測試**。
順便說一下上例中file:open/2的的涵義,這是指要求將資料延遲寫入檔案,只有當資料達到size位元組,或者資料已經存活了delay毫秒。具體參看file module.
在erlang中是沒有c++中類似的隱式型別轉換,這樣做的目的是為了使語言簡單,便於除錯開發。
erlang是如此透徹,堅定。你只要掌握有限的幾種資料型別,掌握功能強大的模式匹配,明白變數的一次數值繫結,勤寫**,勤看文件。
不要多久,你也可以寫出簡單,高校,易讀的erlang應用。
erlang的資料型別 (2)
繼續前面說列表。列表裡面的元素,第乙個成為head,head之後的都叫tail。用erlang的內建方法看一下 hd 1,2,3,4 1 tl 1,2,3,4 2,3,4 為什麼要這樣呢?因為列表的指標是在頭部的,對頭部進行操作是最快捷和高效的。使用豎線 能快速區分頭部和尾部 h t 1,2,3,4...
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 函式來...