如何快速删除list中的最后一个元素?
(前言: 在项目中,在统计在线用户量及其行为方式的时候,想在项目如“/bob/recode/online”,结果发现:把写日志的东西放到了ebin文件下,即:/bob/ebin/report/online,于是,想着截取掉“ebin”,这样就可以达到在要求,即:”/bob/report/online“.)
再回到题目上来,删除list中的最后一个元素,看下面:
可以使用lists:sublist(L,1,length(L)-1).
1>lists:sublist("12345",1,length("12345")-1).
"1234"
2>L = [[12345],2,3].
[[12345],2,3]
3>lists:sublist(L,1,length(L)-1).
[[12345],2]
下面的三种方式都可以实现:删除list中的最后一个元素:
1). LResult = lists:sublist(L,1,length(L)-1).
2). {LResult,_} = lists:split(length(L)-1,L).
3). LResult = lists:foldr(fun(E,first) —> [ ];(E,Acc)when is_list(Acc) —> [E | Acc] end.first,L).
再回到项目上来,这样想删除后面的是最后一个还是倒数第几个就都可以实现了.
PS:三下五除二,写完了,被老大说了,说是这么写,路径就在源文件中了.erl中了,而如果客户想改变存放路径则很难实现,因为源码是不给的。
于是,又写了第二种写文件的方法。即:在配置文件中,yaws.conf中配置路径,然后在include文件夹下的.hrl头文件定义常量宏(define),通过头文件的导入,在.erl源文件下得以实现.
这样,客户就可以通过配置文件xxx.conf来进行随意更改自己想要的路径,进行存放。因为配置文件是可以给客户的。心得:不要因为完成一个功能或者实现,就觉得万事大吉了,需要在项目的角度,在客户的角度进行换位思考,进行编码实现功能。