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.