Skip to main content

Elixir: Pattern Matching - A Taste of Functional Programming

= is a match operator
After an initial assignment it then becomes a match assertion.
num = 1

To check the match assertion you can try this and it will be valid
1 = num

Furthermore, these are also valid:
[1] = [1]
[num] = [num]

Destructuring
[score1, score2, score3] = [89, 93, 87]
IO.puts score1  # 89
IO.puts score2  # 93
IO.puts score3  # 87

{:ok, value} = {:ok, 1000}
IO.puts value  # 1000

{:error, message} = {:error, "Uh oh"}
IO.puts message  # "Uh oh"

Error when matching:
{:foo, value} = {:bar, "nope"}

** (MatchError) no match of right hand side value: {:bar, "nope"}

Matching function arguments
Various function definitions and subsequent calls:
def sum_two_nums(num1, num2) do
  num1 + num2
end

sum_two_nums(2,5)


def sum_two_nums(%{num1: num1, num2: num2}) do
  num1 + num2
end

sum_two_nums(%{num1: 2, num2: 5})


def sum_two_nums([num1, num2]) do
  num1 + num2
end

sum_two_nums([2,5])

There's so much more you can do with pattern matching. It is one of the most powerful features you will learn and use when programming in Elixir.


Other posts in this series:

Comments

Popular posts from this blog

Setting up Sinatra and DataMapper on Windows

I use a MacBook Pro for work and pleasure on a day-to-day basis. Recently, I was asked to teach web students at a local high school. These students know html/graphics/flash/etc. The advanced students were ready for some server-side programming and database integration. I wanted the students to be able to get up and going quickly (for motivation reasons) and to create useful apps (using a database). I felt Sinatra to be a great fit for this. I created a Sinatra app for my uncle and his business. It was a joy to work with it and I was able to deploy quickly using Heroku . My experience of using Sinatra on my Mac was straightforward. Like most things using Ruby and Mac: it just worked. However, I found out the students at the high school use MS Windows. Fortunately, I have a Windows XP virtual machine running in VMWare so I could prepare that way. I used to teach computer science and web development at Spokane Community College and am aware of teaching Ruby in a Windows lab environm

Beginning Erlang for Ruby Developers

If you missed my "Beginning Erlang for Ruby Developers" here is a link to the presentation. https://beg-erlang-for-ruby-devs.herokuapp.com/