我有以下结构:
[nil,
%{attributes: %{updated_at: ~N[2017-09-21 08:34:11.899360]},
...]
我想删除nils。我怎么做?试过Enum.reduce/3
,但它没有用。
答案 0 :(得分:42)
Enum.filter/2
来救援:
Enum.filter(list, & !is_nil(&1))
如果您确定列表中没有false
个原子(Elixir中另一个可能的假值),则过滤器可能会简化为:
Enum.filter(list, & &1)
另外(@Dogbert学分)有一个对应的函数Enum.reject/2
“返回enumerable
的元素,函数fun
返回false
或nil
}“。
Enum.reject(list, &is_nil/1)
答案 1 :(得分:0)
这对我有用:
#include <stdio.h>
#define MAX 256
void ReadingData (FILE *fi)
{
int i=0;
char bookCode[MAX], title[MAX], author[MAX], year[MAX];
float selfCost, selfPrice;
while (fscanf(fi, " %[^|]|%[^|]|%[^|]|%[^|]|%f|%f",bookCode,title,author,year,&selfCost,&selfPrice)==6)
{
printf ("%s %s %s %s %.2f %.2f\n",bookCode,title,author,year,selfCost,selfPrice);
i++;
printf ("%d\n",i);
}
}
int main(void)
{
ReadingData(stdin);
return 0;
}
答案 2 :(得分:0)
Enum.filter(list, fn x -> x != "" end)