2014-02-12 37 views

回答

4

<<"hello">>只是一個特殊的語法來創建一個包含字符串中的字節字面二進制 - 它是<<$h, $e, $l, $l, $o>>語法糖,而且它看起來像一個字符串的事實(即,字符列表)只是一個巧合。

如果字符串是一個變量,你不能將其插入直接二進制;你需要把它顯式轉換:

ContentBinary = list_to_binary(Content), 
1

當你在控制檯或在節目類型< <「你好」 >>,它是一種捷徑,上面寫着採取列表中的「你好」恩將其轉換爲二進制文件。然後控制檯使用漂亮的打印格式來顯示它。

將內容定義爲列表「hello」時,語法快捷方式不再可用,並且erlang正在查找有效類型(Type = integer | float | binary | bytes | bitstring | bits | utf8 | utf16 | utf32)並找到一個列表,這就是爲什麼你得到這個不好的參數exeption。

以下項是正確的:

7> V1 = <<"hello">>.   
<<"hello">> 
8> V2 = "hello".    
"hello" 
9> V1 = list_to_binary(V2). 
<<"hello">>