Skip to content

Latest commit

 

History

History
33 lines (28 loc) · 881 Bytes

pipe-into-a-case-statement.md

File metadata and controls

33 lines (28 loc) · 881 Bytes

Pipe Into A Case Statement

The standard use of a case statement looks something like this:

case HTTPoison.get(url) do
  {:ok, %HTTPoison.Response{status_code: 200, body: body}} ->
    IO.puts body
  {:ok, %HTTPoison.Response{status_code: 404}} ->
    IO.puts "Not found :("
  {:error, %HTTPoison.Error{reason: reason}} ->
    IO.inspect reason
end

If you are a fan of the pipe syntax, then you may enjoying writing the above like this:

url
|> HTTPoison.get()
|> case do
  {:ok, %HTTPoison.Response{status_code: 200, body: body}} ->
    IO.puts body
  {:ok, %HTTPoison.Response{status_code: 404}} ->
    IO.puts "Not found :("
  {:error, %HTTPoison.Error{reason: reason}} ->
    IO.inspect reason
end

Just like any function, the value from the previous line in the pipe will be passed in and used as the value switched over in the case statement.