Elixir从列表中删除nil

时间:2017-09-21 09:08:26

标签: list elixir

我有以下结构:

[nil,
 %{attributes: %{updated_at: ~N[2017-09-21 08:34:11.899360]},
 ...]

我想删除nils。我怎么做?试过Enum.reduce/3,但它没有用。

3 个答案:

答案 0 :(得分:42)

Enum.filter/2来救援:

Enum.filter(list, & !is_nil(&1))

如果您确定列表中没有false个原子(Elixir中另一个可能的假值),则过滤器可能会简化为:

Enum.filter(list, & &1)

另外(@Dogbert学分)有一个对应的函数Enum.reject/2“返回enumerable的元素,函数fun返回falsenil }“。

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)