Elixir - Operadores diversos
Além dos operadores acima, Elixir também fornece uma variedade de outros operadores que o tornam uma linguagem bastante poderosa.
Operador de concatenação
Elixir fornece um operador de concatenação de string, '<>'. Isso é usado para concatenar 2 strings. Por exemplo,
IO.puts("Hello"<>" "<>"world")
O comando acima gera o seguinte resultado -
Hello World
Combine
O operador de correspondência, '='faz uso do recurso de correspondência de padrões da linguagem. Discutiremos esse operador em detalhes em um capítulo subsequente sobre correspondência de padrões.
Observe que = não é apenas um operador de atribuição. Quando temos o valor esquerdo como uma variável e o valor direito como literal ou outra variável, o valor direito é vinculado à variável, ou seja, a atribuição ocorre. Mas se tivermos uma variável à direita e literal à esquerda, ocorre a correspondência de padrões. O mesmo acontece quando ambos os valores são literais.
PIN
O operador do pino, '^'é um operador unário usado prefixando o nome de uma variável. Ele garante que a variável, quando usada com o operador de correspondência, não tenha um valor atribuído, mas seja correspondida a esse valor. Por exemplo,
a = 12 #assignment
a = 13 #assignment
^a = 13 #Pattern matching
Tubo
O operador pipe, '|>' funciona como o operador pipe em shells Unix. Ele nos permite canalizar a saída de uma função para outra. Por exemplo, se precisarmos canalizar o resultado da adição emIO.puts, vamos usar -
(4+3) |> IO.puts
Ao executar o programa acima, ele produz o seguinte resultado -
7
Isso reconhecerá que canalizamos o resultado da adição na função IO.puts. Isso imprimirá 7 em seu console.
String Match
O operador de correspondência de string, '= ~', recebe uma string à esquerda e uma string ou uma expressão regular à direita. Se a string à direita for uma substring da esquerda, true será retornado. Se a expressão regular à direita corresponder à string à esquerda, será retornado true. Caso contrário, false é retornado. Por exemplo,
IO.puts("tutorialspoint" =~ "poi")
IO.puts("tutorialspoint" =~ ~r/[a-z]*/)
IO.puts("tutorialspoint" =~ ~r/[0-9]*/)
Ao executar o programa acima, ele produz o seguinte resultado -
true
true
true
Observe que regexes começam com um '~r' prefixo no Elixir.
Ponto de Código
É um operador unário, '?' que retorna o ponto de código UTF-8 do caractere imediatamente à sua direita. Pode levar apenas um caractere e aceita sequências de escape. Por exemplo,
IO.puts(?a)
IO.puts(?\s)
Ao executar o programa acima, ele produz o seguinte resultado -
97
32
Capturar
O operador de captura, '&', é usado ao definir funções anônimas. Discutiremos isso em detalhes no capítulo de funções.
Ternário
Elixir não tem operador ternário. Podemos alcançar a mesma funcionalidade usando a instrução if else-
a = if true, do: "True!", else: "False!"
Dentro
Este operador verifica se o item esquerdo existe na estrutura enumerável à direita. Por exemplo, podemos verificar se há um átomo em uma lista, tupla, etc. de átomos usando este operador -
:yes in [:true, :false, :yes]
A afirmação acima retorna verdadeira como :yes existe na lista.