读书人

Erlang 实践传略-1

发布时间: 2012-09-14 11:53:44 作者: rapoo

Erlang 实践杂记-1

?

一、列表、字符串相关

?

?

1、场景描述

当下,Erlang和php交互,用mochiweb和ibrowse的方式比较多,ibrowse?需要发送url给php,url为字符串。若需要string:concat()?的变量不为string类型,就需要进行转化。前提是,Erlang处理中,多为二进制。

2、问题

1>?B?=?<<"test">>.

<<"test">>

2>?S?=?binary_to_term(B).

**?exception?error:?bad?argument

?????in?function??binary_to_term/1

????????called?as?binary_to_term(<<"test">>)

?

上例,视图将binary类型的数据转换成term数据,出现?bad?argument?错误,悲剧。

?

3>?L?=?binary_to_list(B).

"test"

貌似是可以了,但是,使用string:concat("my",?L)?时会再一次发生悲剧,这个时候的L是list类型,而string:concat?要求的参数是string类型,所以当然会悲剧。

?

3、解决

1>?B?=?<<"test">>.

<<"test">>

2>?L?=?binary_to_list(B).

"test"

3>?S?=?lists:flatten(L).

"test"

?

这个时候,再去看看string:concat("my",?S)?,OK,搞定。

?

4、总结

????http://www.erlang.org/doc/man/lists.html#flatten-1?

????flatten(DeepList)?->?List

?????Types:

DeepList?=?[term()?|?DeepList]

????Returns?a?flattened?version?of?DeepList.

?

?

读书人网 >编程

热点推荐