正如它所写,这段代码无法编译。所以我猜测一些观点并尝试回答。但通常在这个论坛中,您应该注意提出明确的问题,尽可能少地提出开放点:
- Head 和 Req 未使用?
- Send 和 FoldRows 是未定义的变量
- 行的格式未定义...
不过我可以给你一些线索
定义一个过滤函数,如果该行符合您的条件,则返回 1,否则返回 0:
Filter = fun({Row},Type) ->
case proplists:get_value(<<"type">>, element(1,proplists:get_value(<<"value">>,Row))) of
Type -> 1;
_ -> 0
end
end,
那么您需要一个包含所有行的列表,这在您的代码示例中缺失,假设 RowList 是一个包含 {Row} 形式的元素的列表。
现在您可以使用列表库来创建计数函数:
Count = fun(RowList,Type) -> lists:foldl(fun(X,Acc) -> Filter(X,Type) + Acc end, 0, RowList) end,
并像这样使用它Count(RowList,<<"TYPEONE">>)
如图所示:
27> E1 = {[{foo,0},{<<"value">>,{[{bar,0},{<<"type">>,<<"TYPEONE">>}],baz}}]}.
{[{foo,0},
{<<"value">>,{[{bar,0},{<<"type">>,<<"TYPEONE">>}],baz}}]}
28> E2 = {[{foo,0},{<<"value">>,{[{bar,0},{<<"type">>,<<"TYPETWO">>}],baz}}]}.
{[{foo,0},
{<<"value">>,{[{bar,0},{<<"type">>,<<"TYPETWO">>}],baz}}]}
29> E3 = {[{foo,0},{<<"value">>,{[{bar,0},{<<"notype">>,<<"TYPEONE">>}],baz}}]}.
{[{foo,0},
{<<"value">>,{[{bar,0},{<<"notype">>,<<"TYPEONE">>}],baz}}]}
30> E4 = {[{foo,0},{<<"value">>,{[{bar,0},{<<"type">>,<<"TYPEONE">>}],baz}}]}.
{[{foo,0},
{<<"value">>,{[{bar,0},{<<"type">>,<<"TYPEONE">>}],baz}}]}
31> RowList = [E1,E2,E3,E4].
[{[{foo,0},
{<<"value">>,{[{bar,0},{<<"type">>,<<"TYPEONE">>}],baz}}]},
{[{foo,0},
{<<"value">>,{[{bar,0},{<<"type">>,<<"TYPETWO">>}],baz}}]},
{[{foo,0},
{<<"value">>,{[{bar,0},{<<"notype">>,<<"TYPEONE">>}],baz}}]},
{[{foo,0},
{<<"value">>,{[{bar,0},{<<"type">>,<<"TYPEONE">>}],baz}}]}]
32> Count(RowList,<<"TYPEONE">>).
2
33> Count(RowList,<<"TYPETWO">>).
1
34>