flatten 什么作?
erlang lists:flatten 什么作用
lists模块的操作,看到flatten的操作不是很理解,所以查了查,看到一个不错的帖子,学习学习 (转)关键技术点: erlang中string 就是list
erlang中string 就是list,所以没有list_to_string或string_to_list的函数,但是,对于借助erlydtl生成的如下脚本: ["/ntotal ","1"," page num is/n/n colName1colName2/n ",[["/n /n ","22384814347478301","/n ",['list8888','test8888'],"/n /n "],["/n /n ","12384814347478301","/n ",['list9999','test9999'],"/n /n "]],"/n/n/n"] erlang自带的 inets是无法解析的,我们需要去掉除最外的"[“和 ”]"之外的所有"[" "]",通过lists:flatten()可以去掉。
但是,前提是每个ListofList的元素不能是atom,比如:上面的html,如果直接 lists:flatten(["/ntotal ","1"," page num is/n/n colName1colName2/n ",[["/n /n ","22384814347478301","/n ",['list8888','test8888'],"/n /n "],["/n /n ","12384814347478301","/n ",['list9999','test9999'],"/n /n "]],"/n/n/n"])。
结果是: [60,99,101,110,116,101,114,62,10,60,104,50,62,116,111,116, 97,108,32,49,32,112,97,103,101,32,110,117,109|。。。] 如果将['list8888','test8888']换成 “['list8888','test8888']”或者["list8888","test8888"]就可以了 eg: 1)lists:flatten(["/ntotal ","1"," page num is/n/n colName1colName2/n ",[["/n /n ","22384814347478301","/n ",["list8888","test8888"],"/n /n "],["/n /n ","12384814347478301","/n ",["list9999","test9999"],"/n /n "]],"/n/n/n"])。
结果: "/ntotal 1 page num is/n/n colName1colName2/n /n /n 22384814347478301/n list8888test8888/n /n /n /n 12384814347478301/n list9999test9999/n /n /n/n/n" 2)lists:flatten(["/ntotal ","1"," page num is/n/n colName1colName2/n ",[["/n /n ","22384814347478301","/n ","['list8888','test8888']","/n /n "],["/n /n ","12384814347478301","/n ","['list9999','test9999']","/n /n "]],"/n/n/n"])。
结果: "/ntotal 1 page num is/n/n colName1colName2/n /n /n 22384814347478301/n ['list8888','test8888']/n /n /n /n 12384814347478301/n ['list9999','test9999']/n /n /n/n/n" (下面的操作很犀利!) 所以现在的问题是如何实现在 一个tuple或者一个list的前后加上 双引号(""),方法如下: 用lists:flatten(io_lib:write或lists:flatten(io_lib:format("~p"。
。。来实现, eg: 1)List1=[aaa,bbb]。 lists:flatten(io_lib:write(List1))。 结果: "[aaa,bbb]" 2)lists:flatten(io_lib:format("~p",[List1]))。
结果: "[aaa,bbb]" 注意:format的第一个参数用~p可以用多行显示,比~w更能保持变量的原样,第二个参数一定要是List,所以要用"[]"将变量扩起来,(亲,记得点击下方【好评】哦,您的好评是我最大的动力,么么哒~)。
答:中文名Erlang外文名Erlang类型编程语言开发者CSLab问世1987年1历史2特点函数式3开发工具Emacs▪Erlide4流量单位Erlang历史编辑...详情>>