2014-02-12 39 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">>