Elixir 过滤函数

刚用这个语言,还是有很多地方不会使用。
记录一下,刚刚领导给指导的一个函数,Enum.filter(fn user -> user.id not in list_user_id end)
这是我刚刚用过的函数。
情景是这样的,一个用户下拉列表,添加一条用户信息,下拉类表中减少有个用户名称。
代码如下:
前端页面:

 <div class="col-md-7">
   <%= select nil, :user_id, users(@project.id), id: "user_id", class: "form-control" %>  
   <input type="hidden" id="pro_id" value="<%= @project.id %>">
 </div>

视图函数:

  def users(project_id) do
    list_user_id = Base.list_members(project_id)
    |> Enum.map(&(&1.user_id))
    System.list_users()
    |> Enum.map(&{&1.name, &1.id})
    |> Enum.filter(fn {name, id} -> id not in list_user_id end)
  end

简单介绍下 Enum.filter()函数

Enum.filter(fn {name, id} -> id not in list_user_id end)
// filter过滤函数
// fn 开始格式固定的
// {name, id} -> id  这个位置是条件,因为在Enum.map(&{&1.name, &1.id})一句定义了,需要的是id字段,这里也是个集合
// not in 不存在其中 (in 就是在其中)
// list_user_id 这个是 集合,id 与 集合中的值

变换一下:
结果是一样的

 def users(project_id) do
    list_user_id = Base.list_members(project_id)
    |> Enum.map(&(&1.user_id))
    user = System.list_users()
    |> Enum.map(&(&1.id))
    |> Enum.filter(fn user -> user.id not in list_user_id end)
  end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值