iex - Start Elixir’s Interactive Shell
h - Get Help info about function
i - Variable Data Type Information
1. Integers
3, 777, -2, 0, 1_000_0002. Floats
3.14, 0.000000013. Atoms
An atom is a constant whose name is its value.
The booleans true and false are also the atoms :true and :false, respectively.
Names of modules in Elixir are also atoms.
:name, :gender, :status4. Strings
"Let it be"iex(32)> "admin " <> "Max"
"admin Max"--- Pattern matching ---
iex(34)> "check: " <> check_str = "check: 7"
"check: 7"
iex(35)> check_str
"7"5. Lists List can contain mixed types of information
[1, 2]--- List Concatenation ---
[1, 2] ++ [3, 4, 1]
[1, 2, 3, 4, 1]--- List Subtraction ---
["foo", :bar, 42] -- [42, "bar"]
["foo", :bar]
[1,2,2,3,2,3] -- [1,2,3,2]
[2, 3]
[2] -- [2.0]
[2]
[2.0] -- [2.0]
[]6. Tuples Tuples are similar to lists, but are stored contiguously in memory. This makes accessing their length fast but modification expensive; the new tuple must be copied entirely to memory.
{3.14, :pie, "Apple"}--- PATTERN MATCHING ---
my_tuple = {:add, [1, 2]}
{:add, [1, 2]}
iex(43)> {atom, [first, second]} = my_tuple
{:add, [1, 2]}
iex(44)> atom
:add
iex(45)> first
17. Maps
newMap = %{:name => "Max", "hello" => :world}
iex(13)> newMap["hello"]
:worldShort syntax:
%{name: "Max", hello: :world}
{foo: "bar", hello: "world"}--- PATTERN MATCHING ---
iex(38)> coder = %{"name" => "Max", "language" => "Elixir"}
%{"language" => "Elixir", "name" => "Max"}
iex(39)> %{"name" => name, "language" => language} = coder
%{"language" => "Elixir", "name" => "Max"}
iex(40)> name
"Max"
iex(41)> language
"Elixir"8. Structs Structs are extensions built on top of maps that provide compile-time checks and default values.
iex> defmodule User do
...> defstruct name: "John", age: 27
...> end
iex> %User{}
%User{age: 27, name: "John"}
iex> %User{name: "Jane"}
%User{age: 27, name: "Jane"}9. Conditional Expressions
cond do
age < 18 -> "You can't vote yet"
age < 25 -> "You can vote"
true -> "You can vote and can be a president also"
end10. Case Expressions
message = case Float.parse(age) do
{age, _} when age < 18 -> "You are to young to vote"
{age, _} when age < 25 -> "You are allowed to vote"
{_age, _} -> "You can vote and can become the president yourself"
:error -> "Invalid input"
end11. Functions
Anonymous Functions
fn(age) ->
case (Float.parse(age)) do
{age, _} when age < 18 -> "You are not allowed to vote"
{age, _} when age < 25 -> "You can vote"
{_age, _} -> "You can vote and be a president also"
:error -> "Invalid input"
end
endNamed Functions
defmodule Voter do
def check_age(age) do
case Integer.parse(age) do
{age, _} when age < 18 -> "You are not allowed yo vote yet"
{age, _} when age < 25 -> "You can vote"
{_age, _} -> "You can vote and even be a president"
:error -> "Invalid input"
end
end
end