首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据Elixir中的结构类型从列表中获取元素

根据Elixir中的结构类型从列表中获取元素
EN

Stack Overflow用户
提问于 2015-09-17 06:15:49
回答 3查看 971关注 0票数 3

我有一个类型映射,并希望获得“params”为%Plug.Upload{}的值列表。如何检查Elixir中的类型?

EN

回答 3

Stack Overflow用户

发布于 2015-09-17 06:26:42

您可以像在地图上一样对结构进行模式匹配,因此可以使用Enum.filterKernel.match?

代码语言:javascript
运行
复制
params
|> Enum.filter(&match?(%Plug.Upload{}, &1))
票数 4
EN

Stack Overflow用户

发布于 2016-03-31 05:15:30

Plug.Upload是一个映射,所以Enum.filter获得键/值对,值是一个参数,所以:

代码语言:javascript
运行
复制
params |> Enum.filter(fn({k, v}) -> match?(%Plug.Upload{}, v) end)
票数 0
EN

Stack Overflow用户

发布于 2016-07-28 18:37:00

您可以将模式%Plug.Upload{}for一起使用,因为for会跳过所有与传递的模式不匹配的项。

这将返回地图params的值中存在的所有文件的列表

代码语言:javascript
运行
复制
for {_, %Plug.Upload{} = file} <- params, do: file

如果您只想对文件执行某些操作,则可以将一个块传递给do

代码语言:javascript
运行
复制
for {_, %Plug.Upload{} = file} <- params do
  IO.inspect file
end

如果您还想访问提交的表单中显示的文件名,请将_更改为变量名。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32619692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档