我有这个功能:
def update(%Evento{} = evento, attrs, dataSchema) do
evento
|> dataSchema.changeset(attrs)
|> Repo.update()
end
Run Code Online (Sandbox Code Playgroud)
这与%Evento{}结构有关.
我想,使其独立的结构和参数传递代替,从而使调用函数时,我可以通过%Evento{},%News{},%Contact{}或任何结构我想,同时保持相同的功能/模式匹配检查.
您可以使用模式接受任何结构作为参数%_{}:
def update(%_{} = struct, attrs, dataSchema) do
...
end
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用模式%module{}和警卫接受列入白名单的结构集:
def update(%module{} = struct, attrs, dataSchema) when module in [Evento, Foo, Bar] do
...
end
Run Code Online (Sandbox Code Playgroud)
编辑:更新以使用%module{}ŁukaszNiemier在评论中建议的新模式!
| 归档时间: |
|
| 查看次数: |
100 次 |
| 最近记录: |