【发布时间】:2017-08-19 23:17:44
【问题描述】:
在 phoenix 应用程序中,当用户提交特定表单时,lat 和 lng 是从地址计算的。
如果没有进行更改,则 lat 和 lng 可以在 changeset.data 中,如果提交更改,则可以在 changeset.changes 中。
我在变更集上对 lat 和 lng 执行其他操作,但我需要知道坐标在哪里。我想做的是:
cond do
# Always use new coordinates if possible
%{lat: lat, lng: lng} = changeset.changes ->
do_something(lat, lng)
%{lat: lat, lng: lng} = changeset.data ->
do_something(lat, lng)
true ->
do_nothing_and_return_the_changeset_as_is
end
当然这不起作用,因为它没有在模式不匹配时返回true 或false。
** (MatchError) no match of right hand side value: %{lat: any_value}
我实际上做了一个长期不好看的 if else if .... 声明来实现这一点。
有没有更好的灵丹妙药方法来做到这一点?
【问题讨论】: