Guard Clauses in Elixir

From Elixir Wiki
Jump to navigation Jump to search

Guard Clauses in Elixir[edit]

Guard clauses in Elixir allow developers to specify conditions that must be met for a function clause to be executed. These clauses provide a way to pattern match on the arguments of a function and apply different logic based on the values of those arguments.

Syntax[edit]

The syntax for guard clauses in Elixir is as follows:

@attr value

where `attr` is a valid attribute and `value` is a value for that attribute.

Examples[edit]

Here are some examples of how guard clauses can be used in Elixir:

Checking for Type[edit]

defmodule Example do

 def double(value) when is_number(value) do
   value * 2
 end

end

Checking for Size[edit]

defmodule Example do

 def greet(name) when byte_size(name) < 10 do
   "Hello, " <> name
 end

end

=Checking for Empty[edit]

defmodule Example do

 def is_empty?(list) when length(list) < 1 do
   true
 end

end

Guard clause attributes[edit]

Elixir provides a variety of attributes that can be used in guard clauses. Some of the commonly used attributes include:

- is_atom: checks if a value is an atom. - is_binary: checks if a value is a binary. - is_boolean: checks if a value is a boolean. - is_function: checks if a value is a function. - is_integer: checks if a value is an integer. - is_list: checks if a value is a list. - is_map: checks if a value is a map. - is_pid: checks if a value is a process identifier. - is_port: checks if a value is a port. - is_reference: checks if a value is a reference. - is_tuple: checks if a value is a tuple. - is_number: checks if a value is a number.

Conclusion[edit]

Guard clauses in Elixir provide a powerful way to perform pattern matching based on conditions. They allow developers to write clean, concise, and expressive code. By using guard clauses, you can enhance the readability and maintainability of your Elixir code.

See Also[edit]