What is the difference between Cond and Case?

Let me put if to the club too. You use if with one condition and a possible else, that’s it. You use the cond statement when you have more than one condition and an if statement isn’t enough, by the end, the case statement is used when you want to pattern match some data.

Let’s explain by examples: suppose you want to eat apple if today is raining or rice if not, then you could use:

if weather == :raining do
  IO.puts "I'm eating apple"
else
  IO.puts "I'm eating rice"
end

This is a limited world, so you want to expand your options and because of that you will eat different things on some conditions, so the cond statement is for that, like this:

cond do
  weather == :raining and not is_weekend ->
    IO.puts "I'm eating apple"
  weather == :raining and is_weekend ->
    IO.puts "I'm will eat 2 apples!"
  weather == :sunny ->
    IO.puts "I'm happy!"
  weather != :raining and is_sunday ->
    IO.puts "I'm eating rice"
  true ->
    IO.puts "I don't know what I'll eat"
end

The last true should be there otherwise it’ll raise an exception.

Well so what about case? It is used to pattern match something. Let’s suppose you receive the information about the weather and the day of week as a message in a tuple and you depend on that to take a decision, you could write your intentions as:

case { weather, weekday } do
  { :raining, :weekend } ->
    IO.puts "I'm will eat 2 apples!"

  { :raining, _ } ->
    IO.puts "I'm eating apple"

  { :sunny, _ } ->
    IO.puts "I'm happy!"

  { _, :sunday } ->
    IO.puts "I'm eating rice"

  { _, _ } ->
    IO.puts "I don't know what I'll eat"
end

So the case brings to you the pattern-matching approach to the data, that you don’t have with if or cond.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)