管道操作员如何在最后一行返回结果?

时间:2015-12-04 09:32:33

标签: elixir phoenix-framework ecto

我可以在最后一行返回time_stamp而不用大括号括起来吗?

{:ok, time_stamp} = Myapp.Repo.insert(changeset) # |> Map.get time_stamp
time_stamp

# {:ok, %Myapp.TimeStamp{__meta__: #Ecto.Schema.Metadata<:loaded>, active: true...}

1 个答案:

答案 0 :(得分:6)

您可以使用Kernel.elem/2按索引从元组中获取项目(从0开始)。

Myapp.Repo.insert(changeset) |> elem(1)

但是,如果您的变更集无效,那么这将返回变更集,因为无效变更集将返回{error, changeset}

如果您能解释一下为什么要这样做,那么我们可能会进一步提供帮助。