Tipos de dados

Tradicionalmente, comandos de shell do Unix comunicavam-se entre si através de strings de texto. Um comando gerava texto como saída através da saída padrão (normalmente abreviada como 'stdout') e o outro comando lia o texto pela entrada padrão (ou 'stdin'). Desse modo, os dois comandos podiam se comunicar.

Podemos pensar nesse tipo de comunicação como baseada em texto ou baseada em strings.

Nu adota essa abordagem para seus comandos e a amplia para incluir outros tipos de dados. Atualmente, Nu suporta dois tipos de dados: simples e estruturados.

Dados simples

Como muitas linguagens de programação, Nu modela dados usando um conjunto de tipos de dados simples e estruturados. Tipos de dados simples incluem inteiros, decimais, strings, booleanos, datas e caminhos. Inclui também um tipo especial para tamanhos de arquivos.

Inteiros

Números inteiros. Exemplos incluem 1, 5 e 100.

Decimais

Decimais são números com um componente fracionário. Exemplos incluem 1.5, 2.0 e 15.333.

Strings

Strings são a maneira fundamental de se representar texto. Aparecem entre aspas duplas. Exemplos incluem "Fred", "myname.txt" e "Lynchburg, VA".

Strings no Nu são compatíveis com Unicode por padrão, então pode-se usar texto UTF-8 com facilidade.

Booleanos

Booleanos representam os valores verdadeiro ou falso. Ao invés de se escrever seus valores diretamente, são frequentemente o resultado de uma comparação.

Datas

Datas e horários são mantidos juntos no tipo de dado Data. Valores de Data usados pelo sistema são compatíceis com fusos horários e usam o fuso UTC por padrão.

Caminhos

Caminhos são uma forma independente de plataforma de se representar o caminho de um arquivo num dado sistema operacional. Exemplos incluem /usr/bin e C:\Users\file.txt.

Bytes

Tamanhos de arquivos são mantidos num tipo especial de inteiros chamado bytes. Exemplos incluem 100, 15kb e 100mb.

Dados estruturados

Dados estruturados são criados a partir de dados simples. Por exemplo, em vez de um inteiro simples, dados estruturados nos dão uma maneira de representar múltiplos inteiros no mesmo valor. Aqui está uma lista dos tipos de daods estruturados suportados atualmente: objetos, dados binários, listas e blocos.

Objetos

O tipo de dados Objeto representa o que você veria em uma linha de dados em uma tabela. Ele tem diferentes elementos de dados e a cada elemento é dado um nome de coluna.

Dados binários

Dados binários, como os dados de um arquivo de imagem, são um agrupamento cru de bytes.

Listas

Listas podem guardar mais de um valor. Isso faz com que sejam um bom container para linhas de dados em uma tabela.

Blocos

Blocos representam a bloco de código no Nu. Por exemplo, no comando where { $it.size > 10kb } o bloco é a porção contida entre chaves, { $it.size > 10kb }. Blocos são uma maneira útil de representar código que pode ser executado em linha de dados.