Elixir: coleções, sigils e padrões

lista de features
Exemplo de declaração de um map como se fosse um objeto da classe person
exemplo de uma trie
Exemplo de declaração de struct
# Uma expressão regular que encontram strings que contenham "foo" ou "bar":iex> regex = ~r/foo|bar/
~r/foo|bar/
#o operador =~ compara uma regex com uma stringiex> "foo" =~ regex
true
iex> "bat" =~ regex
false
~r/hello/
~r|hello|
~r"hello"
~r'hello'
~r(hello)
~r[hello]
~r{hello}
~r<hello>
#sigil string
iex> ~s(string "comum")
"string \"comum\""
#sigil charlist
iex> ~c(charlist com 'aspas' simples)
'charlist com \'aspas\' simples'
#sigil wordlists
iex> ~w(uni duni te)
["uni", "duni", "te"]
#sigil heredoc
iex> ~s"""
...> isso é
...> uma string heredoc
...> sou criada com três aspas duplas
...> e sou usada para documentação
...> """
#sigil data simples (AAAA-MM-DD)
iex> data = ~D[2020-09-26]
~D[2020-09-26]
iex> data.year
2020
#sigil de hora (HH:MM:SS)
iex> t = ~T[16:31:07]
~T[16:31:07]
iex> t.second
7
#sigil de data completa sem timezone
iex> data_completa = ~N[2020-09-26 16:32:21]
~N[2020-09-26 16:32:21]
iex> data_completa.hour
16
#uso em variáveis
iex> x = 1
1
iex> 1 = x
1
iex> 2 = x
** (MatchError) no match of right hand side value: 1
#uso em lists, perceba que a atribuição é feita através de padrões
iex> [a, b, c] = [1, 2, 3]
[1, 2, 3]
iex> a
1
exemplo de fizzbuzz usando pattern matching

--

--

--

Escritor-Desenvolvedor

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
Adriano Croco

Adriano Croco

Escritor-Desenvolvedor

More from Medium

What are the benefits of zinc plating?

Same Mistakes, Different Result.

Grit VS Wit

How to Tune a Mandolin