在編程鳳凰例如功能,第3章,沒有與下面的代碼硬編碼的回購例如:重寫編程使用管道
defmodule Rumbl.Repo do
@moduledoc """
In memory repository.
"""
def all(Rumbl.User) do
[%Rumbl.User{id: "1", name: "José", username: "josevalim", password: "elixir"},
%Rumbl.User{id: "2", name: "Bruce", username: "redrapids", password: "7langs"},
%Rumbl.User{id: "3", name: "Chris", username: "chrismccord", password: "phx"}]
end
def all(_module), do: []
def get(module, id) do
Enum.find all(module), fn map -> map.id == id end
end
def get_by(module, params) do
Enum.find all(module), fn map ->
Enum.all?(params, fn {key, val} -> Map.get(map, key) == val end)
end
end
end
使用的管道,我似乎更容易理解的方式改寫了get/2
:
def get(module, id) do all(module) |> Enum.find fn map -> map.id == id end end
有沒有簡單的方法可以做到get_by/2
?
謝謝,克里斯。我想我的問題更多地是關於如何使用管道來「解開」嵌套的Enum.find,Enum.all?和Map.get :) – gusaiani
然後,一個單獨的功能,就像Proctor所說的那樣。 –