6
나는 매칭 및 삭제 항목
[{x, a, y}, {x, b, y}].
이 내장 함수 있는가, 튜플, 말의 목록을 (또는 나는 BIFS의 조합을 사용할 수 있습니다)
{x, _, y}
일치하는 모든 튜플을 삭제 , 일치 및 삭제에서 두 번째를 무시하고 튜플의 첫 번째 및 세 번째 용어를 기반으로?
나는 매칭 및 삭제 항목
[{x, a, y}, {x, b, y}].
이 내장 함수 있는가, 튜플, 말의 목록을 (또는 나는 BIFS의 조합을 사용할 수 있습니다)
{x, _, y}
일치하는 모든 튜플을 삭제 , 일치 및 삭제에서 두 번째를 무시하고 튜플의 첫 번째 및 세 번째 용어를 기반으로?
lists:filter/1 기능은 사용자의 요구 사항과 일치합니다.
Ls = [{x,a,y}, {a,b,c}],
F = fun ({x,_,y}) -> false ; (_) -> true end,
lists:filter(F, Ls).
map comprehension은 map/2와 lists : filter/2와 같은 목록 통합을 사용할 수도 있습니다. 당신의 술어가 반대 인 경우
[L || L <- Ls, F(L)]
는 점에서 당신 만 일치 {X, _, Y} 당신이 발전기는 패턴과 일치하는하지 필터링 때문에, 다음과 같이 쓸 수를 원했다.
[L || {x,_,y}=L <- Ls]
필자는 목록을 어떻게 사용했는지 : 위의 필터를 따라했지만 변수를 사용하여이를 수행하려는 경우 작동하지 않습니다. 다음과 같이하십시오 : F = 재미 ({_, _ 채널}) -> 참; (F(), NewServerState # server_st.client_channel), 채널이 F 스코프에 정의 된 것처럼 보입니다. 외부 범위에 정의 된 "채널"에서 필터링하려면 어떻게해야합니까? – Kersch