如何快速删除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来进行随意更改自己想要的路径,进行存放。因为配置文件是可以给客户的。心得:不要因为完成一个功能或者实现,就觉得万事大吉了,需要在项目的角度,在客户的角度进行换位思考,进行编码实现功能。

 

posted @ 2013-05-16 15:32  孤独信徒  阅读(19910)  评论(0编辑  收藏  举报