elixir - 在长生不老药中访问中间结果
问题描述
我有以下代码,我想有人想使用管道,但我不知道如何使用 - 我尝试了很多不同的方法,但似乎我缺少对管道如何工作的关键理解。无论如何:以下代码可以满足我的要求:
项目 has_many budget_itens/work_items
def show(conn, %{"id" => id}) do
project = Clients.get_project!(id)
project = Map.put_new(project, :budget, total_budget(project.budget_items))
project = Map.put_new(project, :budget_used, budget_used(project.work_items))
project = Map.put_new(project, :budget_remaining, project.budget - project.budget_used)
changeset = Clients.change_budget_item(%BudgetItem{project_id: project.id})
render(conn, "show.html", project: project, changeset: changeset)
end
有什么帮助吗?
解决方案
根据文档,管道操作员|>/2
确实
将左侧的表达式作为右侧函数调用的第一个参数引入。
也就是说,project
建设可能会完成
project = Clients.get_project!(id)
total = total_budget(project.budget_items)
used = budget_used(project.work_items)
project =
project
|> Map.put_new(:budget, total)
|> Map.put_new(:budget_used, used)
|> Map.put_new(:budget_remaining, total - used)
推荐阅读
- sql - GCP BigQuery - LIMIT but full table read - 如何将查询的数据限制在最低限度
- reactjs - 如何在 React js 中使用 select 选项验证多个数组控制器?
- roc - ROC 曲线只有正面和负面的测试结果,但没有基本事实
- crystal-lang - 如何检查 Crystal 中使用的操作系统 (OS)?
- javascript - Content-Security-Policy:Script-src 'self' 在 Firefox 78 Windows NT 10 中无法从同一来源加载脚本
- c# - 如何将复杂对象发送到 Blazor 页面
- css - 材质ui输入背景颜色覆盖标准标签
- python - 如何将具有永久标头的数据写入 Python 中的文件?
- java - Dialogflow 突然无法提取系统实体
- javascript - 在 cloudflare 工作人员中从一个域重定向到另一个域不起作用