programming:elixir:hello_world
Table of Contents
Hello world !
IO.puts("Hello world!") # Same as IO.puts but do not add a new line at the end IO.write("Hello world !")
Interactive Elixir Session
iex
Help
h
Kernel is Elixir's default environment
In Elixir, (almost) everything is a function
Reading values
name = IO.gets("Salut, comment tu t'appelles ? ") IO.write("Salut " <> name)
Atom
An atom type represents a fixed constant. The atom value is simply its own name.
# All atoms are preceded with a : variable = :an_atom
Cond
Cond follows the first path that evaluates to true. If no path evaluates to true, an error is raised by the runtime.
cond do x > 10 -> :this_might_be_the_way y < 7 -> :or_that_might_be_the_way true -> :this_is_the_default_way end
_ (Underscore)
When there is a _ instead of a variable or a value, it means the value will be ignored and any value will be accepted
{_, denominator} = Float.ratio(0.25) # => {1, 4} # the variable `denominator` is bounded to the value 4
[1, _, 3] = [1, "toto", 3] # => [1, "toto", 3]
Sigils ( symbols with magical powers )
A sigil is an alternative syntax for representing and working with literals
A sigil starts with a tilde (~), followed by an upper- or lowercase letter, some delimited content, and perhaps some options
The delimiters can be <…>, {…}, […], (…), |…|, /…/, “…”, and '…'
The letter determines the sigil’s type: ~C A character list with no escaping or interpolation ~c A character list, escaped and interpolated just like a single-quoted string ~D A Date in the format yyyy-mm-dd ~N A naive (raw) DateTime in the format yyyy-mm-dd hh:mm:ss[.ddd] ~R A regular expression with no escaping or interpolation ~r A regular expression, escaped and interpolated ~S A string with no escaping or interpolation ~s A string, escaped and interpolated just like a double-quoted string ~T A Time in the format hh:mm:ss[.dddd] ~W A list of whitespace-delimited words, with no escaping or interpolation ~w A list of whitespace-delimited words, with escaping and interpolation
For
number = IO.gets("Salut, entre un nombre : ") |> String.trim() |> String.to_integer() for i <- 1..number do IO.puts("#{i}") end
In elixir, values are not modified. Values are transformed on output.
Example :
name = "Toto" if (name == "Toto") do IO.puts("Inside condition before name being changed: " <> name) name = "Robin" IO.puts("Inside condition after name being changed: " <> name) end IO.puts("Outside condition after name being changed: " <> name)
Output :
Inside condition before name being changed: Toto Inside condition after name being changed: Robin Outside condition after name being changed: Toto
Example with date :
d1 = ~D[2023-04-25] IO.puts(d1) IO.puts(Date.add(d1, 5)) IO.puts(d1)
Output :
2023-04-25 2023-04-30 2023-04-25
programming/elixir/hello_world.txt · Last modified: 2023/05/02 14:52 by ateixeira