diff --git a/README.md b/README.md index 5b0c8ee..cdecfb4 100644 --- a/README.md +++ b/README.md @@ -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/). -_781 TILs and counting..._ +_782 TILs and counting..._ --- @@ -123,6 +123,7 @@ _781 TILs and counting..._ - [Assert An Exception Is Raised](elixir/assert-an-exception-is-raised.md) - [Binary Representation Of A String](elixir/binary-representation-of-a-string.md) - [Check For A Substring Match](elixir/check-for-a-substring-match.md) +- [Check List Membership](elixir/check-list-membership.md) - [Comparing DateTime Structs](elixir/comparing-datetime-structs.md) - [Compute md5 Digest Of A String](elixir/compute-md5-digest-of-a-string.md) - [Counting Records With Ecto](elixir/counting-records-with-ecto.md) diff --git a/elixir/check-list-membership.md b/elixir/check-list-membership.md new file mode 100644 index 0000000..ca4b67b --- /dev/null +++ b/elixir/check-list-membership.md @@ -0,0 +1,21 @@ +# Check List Membership + +You can use the [`in` operator](https://hexdocs.pm/elixir/operators.html) to +check if something appears in a list. This is a handy way of checking if a +variable is one of a few acceptable or expected values. + +For instance, a common DateTime comparison pattern relies on this to check +if a DateTime is `>=` or `<=` to another DateTime. + +```elixir +{:ok, datetime} = DateTime.from_naive(~N[2016-05-24 13:26:08.003], "Etc/UTC") + +DateTime.compare(datetime, DateTime.utc_now()) in [:lt, :eq] +``` + +Alternatively, you can check that something does not have membership in a +list by also including the `not` operator. + +```elixir +DateTime.compare(datetime, DateTime.utc_now()) not in [:lt, :eq] +```