我想把字符串定義為空 我用了strlen()函數就這個: strlen(stu[m].name)=0;我編譯就提示: 需要用L值在函數:delete請問錯在哪啊 有什么其他方法把字符串定義為空!謝謝了!~~~~
2 回答

守著一只汪
TA貢獻1872條經驗 獲得超4個贊
Erlang中刪除列表元素在標準模塊lists中可以找到delete/2函數,
比如調用lists:delete(2, [1,2,3,4,5])后將返回新的列表[1,3,4,5]
筆者在翻閱lists模塊源碼中發現,一些函數實現成BIF,比如reverse就是一個BIF,在注釋中發現
%% reverse(L) reverse all elements in the list L. Is now a BIF!
由此確定reverse是一個BIF。
但對delete函數的實現沒找到類似的注釋,懷疑其不是一個BIF,其實現存在性能問題,其實現代碼如下:
delete(Item, [Item|Rest]) -> Rest;
delete(Item, [H|Rest]) ->
[H|delete(Item, Rest)];
delete(_, []) -> [].
這個實現沒使用尾遞歸,對大表的操作將會導致堆棧上的內存消耗嚴重。
測試程序如下:
test1() ->
{ok,Bin} = file:read_file("file1.txt"),
L = binary_to_list(Bin),
R = lists:delete($a,L),
io:format("~p~n",[length(R)]).
- 2 回答
- 0 關注
- 799 瀏覽
添加回答
舉報
0/150
提交
取消