6
我有元組,比如列表,匹配和刪除項目
[{x, a, y}, {x, b, y}].
是否有一個內置的函數(或者我可以使用內建函數的組合),以刪除匹配{x, _, y}
所有元組,如在元組中的第一項和第三項的匹配和刪除,忽略第二項?
我有元組,比如列表,匹配和刪除項目
[{x, a, y}, {x, b, y}].
是否有一個內置的函數(或者我可以使用內建函數的組合),以刪除匹配{x, _, y}
所有元組,如在元組中的第一項和第三項的匹配和刪除,忽略第二項?
lists:filter/1功能符合您的需求,例如,
Ls = [{x,a,y}, {a,b,c}],
F = fun ({x,_,y}) -> false ; (_) -> true end,
lists:filter(F, Ls).
您還可以使用列表解析,它就像列表的組合:map/2和lists:filter/2。
[L || L <- Ls, F(L)]
如果你的斷言是相反的,因爲你只是想那些匹配{X,_,Y}你可以寫如下,由於發電機會過濾掉那些不匹配的格局。
[L || {x,_,y}=L <- Ls]
我跟着你如何使用列表:上面的過濾器,但如果我想用變量做它不起作用。 像這樣: F = fun({_,_ Channel}) - > true; (_) - > false end, ClientsOnChannel = lists:filter(F(),NewServerState#server_st.client_channel), 看來Channel在F範圍中被定義。如何讓它在外部範圍中定義的「通道」上過濾? – Kersch 2015-02-27 15:59:47