Use bare double underscores instead of atoms
This commit is contained in:
@@ -2,53 +2,53 @@ defmodule PatternMatching do
|
||||
use Koans
|
||||
|
||||
koan "One matches one" do
|
||||
assert match?(1, :__)
|
||||
assert match?(1, __)
|
||||
end
|
||||
|
||||
koan "A pattern can change" do
|
||||
a = 1
|
||||
assert a = :__
|
||||
assert a = __
|
||||
end
|
||||
|
||||
koan "A pattern can also be strict" do
|
||||
a = 1
|
||||
assert ^a = :__
|
||||
assert ^a = __
|
||||
end
|
||||
|
||||
koan "Patterns can be used to pull things apart" do
|
||||
[head | tail] = [1,2,3,4]
|
||||
|
||||
assert head == :__
|
||||
assert tail == :__
|
||||
assert head == __
|
||||
assert tail == __
|
||||
end
|
||||
|
||||
koan "And then put them back together" do
|
||||
head = 1
|
||||
tail = [2,3,4]
|
||||
|
||||
assert :__ == [head | tail]
|
||||
assert __ == [head | tail]
|
||||
end
|
||||
|
||||
koan "Some values can be ignored" do
|
||||
[_first, _second, third, _fourth] = [1,2,3,4]
|
||||
|
||||
assert third == :__
|
||||
assert third == __
|
||||
end
|
||||
|
||||
koan "Strings come apart just a easily" do
|
||||
"Shopping list: " <> items = "Shopping list: eggs, milk"
|
||||
|
||||
assert items == :__
|
||||
assert items == __
|
||||
end
|
||||
|
||||
koan "Patterns show what you really care about" do
|
||||
%{make: make} = %{type: "car", year: 2016, make: "Honda", color: "black"}
|
||||
|
||||
assert make == :__
|
||||
assert make == __
|
||||
end
|
||||
|
||||
koan "The pattern can make assertions about what it expects" do
|
||||
assert match?([1, _second, _third], :__)
|
||||
assert match?([1, _second, _third], __)
|
||||
end
|
||||
|
||||
def make_noise(%{type: "cat"}), do: "Meow"
|
||||
@@ -60,9 +60,9 @@ defmodule PatternMatching do
|
||||
cat = %{type: "cat", legs: 4, age: 3, color: "grey"}
|
||||
snake = %{type: "snake", legs: 0, age: 20, color: "black"}
|
||||
|
||||
assert make_noise(dog) == :__
|
||||
assert make_noise(cat) == :__
|
||||
assert make_noise(snake) == :__
|
||||
assert make_noise(dog) == __
|
||||
assert make_noise(cat) == __
|
||||
assert make_noise(snake) == __
|
||||
end
|
||||
|
||||
koan "Errors are shaped differently than sucessful results" do
|
||||
@@ -71,6 +71,6 @@ defmodule PatternMatching do
|
||||
_ -> flunk("I should not happen")
|
||||
end
|
||||
|
||||
assert result == :__
|
||||
assert result == __
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user