Thomas Browne
Thomas Browne

Reputation: 24888

Elixir receive message: how do I run multiple statements?

How do I code multiple statements in a single Elixir receive do pattern match?

This works:

def pong sender do
  receive do
    x -> IO.puts("hello"); IO.puts("there"); send(sender, x)
  end
end

But what if I cannot put them all on the same line? Can they be bracketed using a do end clause? Because this does not work:

def pong sender do
  receive do
    x -> do
           IO.puts("hello")
           IO.puts("there")
           send(sender, x)
         end
  end
end

Upvotes: 4

Views: 3482

Answers (1)

Oleksandr Avoiants
Oleksandr Avoiants

Reputation: 1929

I think you can just omit do/end:

def pong sender do
  receive do
    x ->
      IO.puts("hello")
      IO.puts("there")
      send(sender, x)
  end
end

Upvotes: 15

Related Questions