Quick actions

cmd+k|ctrl+k

Navigation

Languages

Elixir `with`

Snippet info

Language

Elixir

Visibility

public

Author

dm.klionsky

Created

2019-04-03T17:29:46Z

Updated

2019-04-03T17:29:59Z

defmodule Test do

def check(opts) do
    with {:ok, name}     <- check_name(opts),
         {:ok, password} <- check_password(opts) 
    do
        {:ok, %{name: name, password: password}}
    end
end

defp check_name(%{name: name}), do: {:ok, name}
defp check_name(%{})          , do: {:error, :name_not_found}

defp check_password(%{password: password}), do: {:ok, password}
defp check_password(%{})                  , do: {:error, :password_not_found}

end

opts1 = %{name: "Name", password: "secret"}
opts2 = %{name: "Name"}
IO.puts(inspect(Test.check(opts1)))
IO.puts(inspect(Test.check(opts2)))
INFO