刚用这个语言,还是有很多地方不会使用。
记录一下,刚刚领导给指导的一个函数,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