Voltar ao blog

Uma Visão Geral dos Tipos de Dados em Ruby

Uma Visão Geral dos Tipos de Dados em Ruby

Ruby é uma linguagem de programação bem conhecida. Ela visa melhorar a simplicidade e a produtividade. Também é uma linguagem de programação totalmente orientada a objetos. Além disso, o Ruby vem com uma sintaxe elegante que é natural de ler e fácil de escrever.

Qualquer programação requer o gerenciamento de vários tipos de dados. Um tipo de dados descreve uma classe específica de dados. Ele diz à máquina como ela deve lidar com os dados no programa. Os tipos de dados são cruciais para determinar o que pode ser feito com os dados (incluindo as operações que podem ser realizadas). Neste tutorial, nós iremos mergulhar mais fundo nos tipos de dados disponíveis no Ruby. Também exploraremos a tipagem dinâmica. Usando esse recurso, o Ruby pode determinar automaticamente o tipo de dados de uma variável sem declará-la explicitamente. Vamos começar!

Pré-requisitos

Para praticar e implementar as etapas demonstradas neste guia, você precisará dos seguintes componentes:

Tipos de dados no Ruby

O Ruby apresenta todos os tipos de dados comuns que você encontrará em qualquer linguagem de programação: inteiros, floats, strings, arrays, símbolos, hashes, etc. A seguir, forneceremos uma visão geral de como trabalhar com os vários tipos de dados do Ruby.

Step 1 – Integers

Semelhante à matemática, inteiros na programação de computadores são números inteiros. O valor pode ser positivo, negativo ou 0. O intervalo de valores é o seguinte:

Hora de testar inteiros no Ruby. O primeiro exemplo é imprimir um inteiro simples na tela:

Data Types in Ruby 1

A seguir, trabalharemos com uma variável inteira. Aqui, a variável sample_int contém um valor inteiro (99) e a print função imprime o valor da variável na tela:

Data Types in Ruby 2

Também podemos fazer contas com inteiros. O exemplo a seguir demonstra uma soma simples de dois números inteiros:

Quando estamos trabalhando com números grandes, frequentemente usamos vírgulas (,) para facilitar a leitura. Por exemplo, um milhão (1000000) é escrito como 1,000,000 para melhor legibilidade. Embora o uso de vírgulas seja proibido, o Ruby permite o uso de underscores ( _) como delimitador. Dê uma olhada no seguinte exemplo:

Data Types in Ruby 3

O uso de underscores melhora a legibilidade do código, especialmente ao lidar com grandes valores inteiros.

Step 2 – Floating-Point Numbers

Um número de ponto flutuante (ou float, para abreviar) representa um número real. Semelhante à definição matemática, os números reais podem ser racionais ou irracionais. No Ruby, um float é basicamente um número que contém um ponto decimal.

Vamos tentar imprimir um valor float na tela:

O próximo exemplo demonstra a declaração de uma variável float:

Também podemos realizar várias operações matemáticas nos valores e variáveis float. O exemplo a seguir demonstra uma soma simples de dois números float:

E se adicionássemos um float e um inteiro? O valor resultante será float. No exemplo a seguir, apesar de 55.0 ser um número inteiro, ele é tratado como um float:

Step 3 – Boolean

Booleanos representam os valores de verdade do ramo lógico da matemática. No Ruby, os tipos de dados booleanos são representados por dois valores: true e false:

  • Maior que

    • 100 > 99: true

    • 99 > 100: false

  • Menor que

    • 500 < 999: true

    • 999 < 500: false

  • Igual

    • 10 == 10: true

    • 9 == 99: false

Semelhante aos números, também podemos armazenar um true ou false valor em uma variável. O exemplo a seguir demonstra esse recurso:

Passo 4 – Strings

In programming, a string é representada como uma sequência de caracteres (letras, números e símbolos). Em Ruby, as strings existem dentro de aspas simples ( ') ou aspas duplas ( "). Nós já cobrimos o uso de strings em Ruby em detalhes, então esta será uma seção curta.

O exemplo a seguir é um programa básico hello world em Ruby:

Também podemos armazenar strings em variáveis. O exemplo a seguir também incorpora concatenação de strings:

Data Types in Ruby 4

Passo 5 – Arrays

Um array é uma estrutura de dados que pode armazenar uma coleção de tamanho fixo de elementos do mesmo tipo de dados. Também pode ser conceituado como uma coleção de variáveis do mesmo tipo de dados. É uma das estruturas de dados mais fundamentais na maioria das linguagens de programação modernas.

Em Ruby, um array é definido da seguinte forma:

É possível criar um array de qualquer outro tipo de dados que discutimos até agora (inteiro, float e strings). Aqui estão alguns exemplos:

  • Inteiro: [-5, 0, 5]

  • Float: [-9.99, -6.99, -3.99, 0, 3.99]

  • String: [“the”, “quick”, “brown”, “fox”]

O exemplo a seguir implementa todos esses tipos de arrays:

Data Types in Ruby 5

Observe que quando a função print encontra um array, ela imprime o array inteiro na tela. Para maior conveniência, você frequentemente encontrará arrays como variáveis. Vamos atualizar o código:

Data Types in Ruby 6

Data Types in Ruby 7

Agora, podemos trabalhar com elementos individuais dos arrays:

Data Types in Ruby 7

Observe que em Ruby, o valor do índice dos arrays começa com 0.

Para conveniência, os arrays em Ruby vêm com os métodos .first e .last que imprimem o primeiro e o último elemento:

Data Types in Ruby 8

Em Ruby, os arrays têm outro recurso interessante. Eles podem conter diferentes tipos de dados ao mesmo tempo. Por exemplo, você pode armazenar strings, símbolos e até mesmo outros arrays:

Data Types in Ruby 9

Passo 6 – Símbolos

No Ruby, um symbolé um tipo de dados especial que funciona como uma etiqueta ou um identificador. Os símbolos são imutáveis, o que significa que não podem ser alterados. Os símbolos aparecem como se estivessem declarando variáveis sem nenhum valor.

Aqui está um exemplo de um símbolo:

Geralmente, os símbolos são usados para identificar algo importante. Para outras situações, no entanto, as strings são mais do que suficientes.

O Ruby, sendo uma linguagem orientada a objetos, trata tudo como um objeto (incluindo strings) com seu local de memória exclusivo, mesmo que as strings sejam idênticas. No entanto, quando você está referenciando um símbolo, é o mesmo objeto em qualquer lugar do programa, o mesmo local de memória.

Passo 7 – Hashes

Um hash é uma coleção de chaves e valores semelhante a um dicionário. Muitas vezes, os hashes são usados para armazenar dados relacionados, por exemplo, informações sobre um usuário.

Aqui está um exemplo rápido de um hash. Nós criamos um hash user_info contendo o nome de usuário e a senha de um usuário:

Data Types in Ruby hashing in ruby

Para recuperar os valores de um par chave-valor, temos que usar a chave. O exemplo a seguir demonstra esse processo:

Data Types in Ruby retrieve value using key

O Ruby também permite definir um hash usando sintaxes ligeiramente diferentes ( : em vez de =>):

Data Types in Ruby retrieving value using key

Essa estrutura de sintaxe é semelhante à sintaxe usada em outras linguagens, por exemplo, JavaScript. Nessa estrutura de sintaxe, as chaves são definidas como símbolos. É por isso que, em vez de usar "username", estamos usando: username para acessar o valor.

Tipagem Dinâmica

Você já deve ter notado que, ao declarar uma variável, não precisamos atribuir explicitamente um tipo de dados. Em vez disso, o valor da variável determina o tipo de dados. O Ruby usa tipagem dinâmica onde a verificação de tipo é realizada em tempo de execução. Em contraste, os tipos de dados são determinados durante a compilação em tipagem estática linguagens de programação (C/C++, por exemplo).

No exemplo a seguir, todos os valores atribuídos à variável dyn_var são válidos:

Em linguagens de tipagem dinâmica, somos livres para reutilizar uma variável existente para armazenar diferentes tipos de dados. Aqui, o exemplo anterior é atualizado para demonstrar esse fenômeno:

dynamically typed variables

Como este exemplo demonstra, toda vez que um novo valor é atribuído, ele altera o tipo de dados de dyn_var na hora. É útil ao converter um tipo de dados em outro. O exemplo a seguir demonstra isso:

get input and cast

Aqui,

  • Como as entradas do teclado são strings, length é uma string a princípio.

  • Como o nosso valor desejado é um float, estamos convertendo o valor da string para float usando o to_f método.

  • Devido à alteração do valor, length recebe o tipo de dados float. É isso que vemos ao imprimir seu valor na tela.

O que aconteceria se tentássemos misturar dois tipos de dados diferentes? O Ruby gerará um erro. Dê uma olhada:

mixing two datatypes

Identificação do Tipo de Dados

No Ruby, tudo é tratado como um objeto. Todo objeto no Ruby vem com o método class. Quando chamado, este método informa qual é o tipo de dados da origem. Aqui estão alguns exemplos de uso do método class:

get classes name

Outra maneira de identificar o tipo de dados é usando o método kind_of?. Ele verifica o tipo de dados do objeto em relação ao tipo de dados solicitado e retorna um valor booleano. Confira no exemplo a seguir:

check datatype

Da mesma forma, existe outro método is_a? que compara o tipo de dados e retorna um valor booleano. A única diferença é o nome do método. No entanto, pode ser preferível porque é um pouco mais fácil para os desenvolvedores lerem e compreenderem. Atualize o exemplo anterior com is_a?:

check datatype

Considerações Finais

Trabalhar com qualquer linguagem de programação exige uma boa compreensão dos tipos de dados que ela suporta. Neste guia, exploramos os tipos de dados mais comuns usados na programação Ruby. Discutimos e demonstramos inteiros, floats, strings, símbolos, booleanos e hashes (com exemplos).

Confira mais tutoriais do nosso blog que ajudarão você a explorar o Ruby:

Boa computação!

author

Preslav Dobrev

Autor · CloudSigma

Preslav Dobrev é um designer criativo na CloudSigma, focado na construção de uma identidade empresarial consistente por meio de canais de marketing tradicionais e inovadores. Ele é hábil em combinar a visão artística com o marketing estratégico para criar narrativas de marca impactantes.

Comentários

Nenhum comentário ainda. Seja o primeiro.