我有一个类型映射,并希望获得“params”为%Plug.Upload{}的值列表。如何检查Elixir中的类型?
发布于 2015-09-17 06:26:42
您可以像在地图上一样对结构进行模式匹配,因此可以使用Enum.filter和Kernel.match?
params
|> Enum.filter(&match?(%Plug.Upload{}, &1))发布于 2016-03-31 05:15:30
Plug.Upload是一个映射,所以Enum.filter获得键/值对,值是一个参数,所以:
params |> Enum.filter(fn({k, v}) -> match?(%Plug.Upload{}, v) end)发布于 2016-07-28 18:37:00
您可以将模式%Plug.Upload{}与for一起使用,因为for会跳过所有与传递的模式不匹配的项。
这将返回地图params的值中存在的所有文件的列表
for {_, %Plug.Upload{} = file} <- params, do: file如果您只想对文件执行某些操作,则可以将一个块传递给do
for {_, %Plug.Upload{} = file} <- params do
  IO.inspect file
end如果您还想访问提交的表单中显示的文件名,请将_更改为变量名。
https://stackoverflow.com/questions/32619692
复制相似问题