mirror of
https://github.com/jbranchaud/til
synced 2026-01-03 07:08:01 +00:00
Add Pipe Into A Case Statement as an elixir til
This commit is contained in:
@@ -10,7 +10,7 @@ smart people at [Hashrocket](http://hashrocket.com/).
|
||||
For a steady stream of TILs from a variety of rocketeers, checkout
|
||||
[til.hashrocket.com](https://til.hashrocket.com/).
|
||||
|
||||
_800 TILs and counting..._
|
||||
_801 TILs and counting..._
|
||||
|
||||
---
|
||||
|
||||
@@ -147,6 +147,7 @@ _800 TILs and counting..._
|
||||
- [Match On A Map In A With Construct](elixir/match-on-a-map-in-a-with-construct.md)
|
||||
- [Passing Around And Using Modules](elixir/passing-around-and-using-modules.md)
|
||||
- [Pattern Matching In Anonymous Functions](elixir/pattern-matching-in-anonymous-functions.md)
|
||||
- [Pipe Into A Case Statement](elixir/pipe-into-a-case-statement.md)
|
||||
- [Quitting IEx](elixir/quitting-iex.md)
|
||||
- [Range Into List Using Comprehensions](elixir/range-into-list-using-comprehensions.md)
|
||||
- [Refer To A Module Within Itself](elixir/refer-to-a-module-within-itself.md)
|
||||
|
||||
33
elixir/pipe-into-a-case-statement.md
Normal file
33
elixir/pipe-into-a-case-statement.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# Pipe Into A Case Statement
|
||||
|
||||
The standard use of a case statement looks something like this:
|
||||
|
||||
```elixir
|
||||
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:
|
||||
|
||||
```elixir
|
||||
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.
|
||||
Reference in New Issue
Block a user