Uma expressão é a menor unidade de código que tem um resultado quando avaliada. No Verse, tudo é uma expressão, o que significa que tudo é avaliado como um valor.
Um exemplo é uma expressão if ... else
, que, no Verse, é avaliada como um valor que depende do conteúdo dos
blocos da expressão. O código a seguir é avaliado como um valor de string, contendo "Big!" ou "Small!" dependendo se MyNumber
for ou não maior que 5:
~~~(verse) if (MyNumber > 5): "Big!" else Pequeno! ~~~
O que significa que você pode usar if... else
diretamente como entrada para funções em vez de armazenar um resultado e usar esse resultado como entrada.
Embora esse exemplo seja simples, há contextos em que isso se torna mais eficiente. Por exemplo, loops são avaliados como matrizes de valores, para que você possa criar rapidamente novas matrizes com base nas existentes.
No código a seguir, MyArray
conterá todos os valores de NumberArray
menores que 5.
MyArray : []int = for(Number := NumberArray, Number < 5):
Number
Expressões falíveis
Uma expressão falível é uma expressão que pode ser bem-sucedida e produzir um valor ou falhar e não retornar nenhum valor. Expressões falíveis só podem ser executadas em um contexto de falha porque esse contexto definirá o que acontece no caso de a expressão falhar.
Exemplos de expressões falíveis incluem a indexação em uma matriz porque um índice inválido falhará, e o uso de operadores para comparar dois valores. Para obter mais informações sobre expressões falíveis no Verse, consulte Falha.
Lista de expressões no Verse
A tabela a seguir descreve os diferentes tipos de expressões no Verse. Explore esta página para obter uma visão geral dos diferentes tipos de expressões no Verse e siga os links para saber mais sobre cada expressão.
Expressão | Descrição | A expressão é falível? |
---|---|---|
Literais | ||
Chamadas de função | Uma chamada de função é uma expressão e pode ter duas formas: FunctionName() e FunctionName[] . O tipo de resultado da expressão de chamada de função é definido na assinatura da função. Consulte mais detalhes em Função. |
Somente quando a chamada da função tem a forma FunctionName[] , e a definição da função tem o especificador <decides> . |
Comparação | Uma expressão de comparação compara duas coisas usando um dos operadores de comparação:
Consulte mais detalhes em Operadores. |
Sim |
Atribuição | Uma expressão de atribuição armazena um valor em uma posição mutável, como ao inicializar uma constante ou alterar o valor de uma variável. Consulte mais detalhes em Variáveis e constantes. | |
Matemática | Uma expressão matemática executa cálculos usando os operadores:
Todos esses operadores também possuem variantes de atribuição que podem ser usadas com ponteiros. Consulte mais detalhes em Operadores. |
Apenas para divisão inteira. |
Decisão | Uma expressão de decisão usa os operadores not , and e or para fornecer controle sobre o fluxo de decisão de sucesso e falha. Consulte mais detalhes em Operadores. |
Sim |
Consulta | Uma expressão de consulta usa o operador ? e verifica se um valor lógico ou de opção é true . Caso contrário, a expressão falhará. Consulte mais detalhes em Operadores. |
Sim |
Instanciação de classes e struct | Criar uma instância de class ou struct é uma expressão. Consulte Classe e Struct. |
|
Fluxo de controle | O fluxo de controle é a ordem na qual um computador executa instruções. Você pode usar expressões como
Consulte mais detalhes em Fluxo de controle. |
|
Matriz | Uma matriz é um contêiner onde você pode armazenar elementos do mesmo tipo. Os elementos de uma matriz ficam na ordem em que você os insere nela, e você pode acessar os elementos de acordo com sua posição na matriz, chamada de índice. Para obter mais informações, consulte Matriz. | Somente ao indexar em uma matriz. |
Tupla | Uma tupla é um contêiner onde você pode armazenar elementos de um ou mais tipos. Os elementos de uma tupla estão na ordem em que você os insere na tupla, e você pode acessar os elementos pela posição que ocupam na tupla, chamada de índice. Para obter mais informações, consulte Tuple (tupla). | |
Mapa | Um mapa é um contêiner onde você pode armazenar valores associados a outro valor, chamado de pares chave-valor. Os pares valor-chave podem ser qualquer combinação de tipos, desde que o tipo de chave seja comparável. Os elementos de um map estão na ordem em que você insere os pares valor-chave no map e podem ser acessados por suas chaves exclusivas. Para mais informações, consulte Mapa | |
Opção | Uma opção é um contêiner que pode ter um ou nenhum valor de um tipo. Para obter mais informações, consulte Opção. | |
Intervalo | As expressões de intervalo contêm todos os números entre e incluindo os dois valores especificados com .. entre, por exemplo, 1..5 . Expressões de intervalo só podem ser usadas em alguns lugares, como em expressões for . Consulte mais detalhes em Intervalo. |