elixir - 后处理 Enum.to_list
问题描述
我有这个管道
events
|> Task.async_stream(&expensive_func/1)
|> Enum.to_list
返回此数据:
[ok: {item}, ok: {item} ... ]
所以,为了有一个项目数组,[item, item]
我像这样对它进行后处理:
events
|> Task.async_stream(&expensive_func/1)
|> Enum.to_list
|> Enum.map(fn {:ok, event} -> event end)
有没有更优雅的方法来做到这一点?
解决方案
其他方式:
events
|> Task.async_stream(&expensive_func/1))
|> Enum.map(&(elem(&1,1)))
警告:由于我们直接访问 each 返回的元组的第二个元素,因此Task
不进行检查以确保Task
已正确运行。您可以添加模式匹配:ok
来解决该问题(就像您在问题中所做的那样)。
推荐阅读
- c# - 我可以将 geojson 文件转换为光栅化图块以供传单使用吗?
- python - 使用 Pycodestyle 正确使用 lambda 函数
- java - 如何验证具有不同属性要求不同方法调用的弹簧模型对象?
- node.js - 无服务器部署到 AWS Lambda 缺少模块?
- sql - 从多个表上的选择更新
- c# - ViewModel 函数有一些无效参数
- git - Git LFS 迁移失败并显示“无法更新参考:退出状态 129”
- powershell - 这应该是 else if 语句吗?
- typescript - Ionic 5 虚拟滚动创建空白空间而不是新项目
- c# - 从模型变量填充 asp 页面