Volver al blog

Una visión general de los tipos de datos en Ruby

Una visión general de los tipos de datos en Ruby

Ruby es un lenguaje de programación muy conocido. Su objetivo es mejorar la sencillez y la productividad. También es un lenguaje de programación totalmente orientado a objetos. Además, Ruby cuenta con una sintaxis elegante que resulta natural de leer y fácil de escribir.

Cualquier programación requiere gestionar varios tipos de datos. Un tipo de datos describe una clase específica de datos. Le dice a la máquina cómo debe manejar los datos en el programa. Los tipos de datos son cruciales para determinar qué se puede hacer con los datos (incluidas las operaciones que se pueden realizar). En este tutorial, vamos a profundizar en los tipos de datos disponibles en Ruby. También exploraremos el tipado dinámico. Con esta función, Ruby puede determinar automáticamente el tipo de datos de una variable sin declararla explícitamente. ¡Empecemos!

Requisitos previos

Para practicar e implementar los pasos demostrados en esta guía, necesitará los siguientes componentes:

Tipos de datos en Ruby

Ruby presenta todos los tipos de datos comunes que encontrará en cualquier lenguaje de programación: enteros, flotantes, cadenas, arreglos, símbolos, hashes, etc. A continuación, ofreceremos una visión general de cómo trabajar con los diversos tipos de datos de Ruby.

Paso 1 – Enteros

Al igual que en las matemáticas, los enteros en la programación informática son números enteros. El valor puede ser positivo, negativo o 0. El rango de valores es el siguiente:

Es hora de probar los enteros en Ruby. El primer ejemplo consiste en imprimir un entero simple en la pantalla:

Data Types in Ruby 1

A continuación, trabajaremos con una variable entera. Aquí, la variable sample_int contiene un valor entero (99) y la función print imprime el valor de la variable en la pantalla:

Data Types in Ruby 2

También podemos hacer operaciones matemáticas con enteros. El siguiente ejemplo demuestra una suma simple de dos números enteros:

Cuando trabajamos con números grandes, a menudo usamos comas (,) para facilitar la lectura. Por ejemplo, un millón (1000000) se escribe como 1,000,000 para una mejor legibilidad. Aunque el uso de comas está prohibido, Ruby permite usar guiones bajos ( _) como delimitador. Eche un vistazo al siguiente ejemplo:

Data Types in Ruby 3

El uso de guiones bajos mejora la legibilidad del código, especialmente cuando se trata de valores enteros grandes.

Paso 2 – Números de punto flotante

Un número de punto flotante (o float para abreviar) representa un número real. Al igual que en la definición matemática, los números reales pueden ser racionales o irracionales. En Ruby, un float es básicamente un número que contiene un punto decimal.

Intentemos imprimir un valor float en la pantalla:

El siguiente ejemplo demuestra la declaración de una variable float:

También podemos realizar varias operaciones matemáticas con los valores y variables float. El siguiente ejemplo demuestra una suma simple de dos números float:

¿Qué pasa si sumamos un float y un entero? El valor resultante será un float. En el siguiente ejemplo, a pesar de que 55.0 es un número entero, se trata como un float:

Paso 3 – Booleanos

Los booleanos representan los valores de verdad de la rama lógica de las matemáticas. En Ruby, los tipos de datos booleanos se representan mediante dos valores: true y false:

  • Mayor que

    • 100 > 99: true

    • 99 > 100: false

  • Menor que

    • 500 < 999: true

    • 999 < 500: false

  • Igual

    • 10 == 10: true

    • 9 == 99: false

Al igual que con los números, también podemos almacenar un true o false valor en una variable. El siguiente ejemplo demuestra esta característica:

Paso 4 – Cadenas

En programación, una cadena se representa como una secuencia de caracteres (letras, números y símbolos). En Ruby, las cadenas existen entre comillas simples ( ') o comillas dobles ( "). Ya cubrimos en detalle el uso de cadenas en Ruby, por lo que esta será una sección corta.

El siguiente ejemplo es un programa básico hola mundo en Ruby:

También podemos almacenar cadenas en variables. El siguiente ejemplo también incorpora la concatenación de cadenas:

Data Types in Ruby 4

Paso 5 – Arrays

Un array es una estructura de datos que puede almacenar una colección de tamaño fijo de elementos del mismo tipo de datos. También se puede conceptualizar como una colección de variables del mismo tipo de datos. Es una de las estructuras de datos más fundamentales en la mayoría de los lenguajes de programación modernos.

En Ruby, un array se define de la siguiente manera:

Es posible crear un array de cualquier otro tipo de datos que hayamos discutido hasta ahora (enteros, flotantes y cadenas). Aquí hay algunos ejemplos:

  • Entero: [-5, 0, 5]

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

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

El siguiente ejemplo implementa todos estos tipos de arrays:

Data Types in Ruby 5

Ten en cuenta que cuando la función print encuentra un array, imprime el array completo en la pantalla. Para mayor comodidad, a menudo encontrarás arrays como variables. Actualicemos el código:

Data Types in Ruby 6

Data Types in Ruby 7

Ahora, podemos trabajar con elementos individuales de los arrays:

Data Types in Ruby 7

Ten en cuenta que en Ruby, el valor del índice de los arrays comienza con 0.

Para mayor comodidad, los arrays en Ruby vienen con los métodos .first y .last que imprimen el primer y el último elemento:

Data Types in Ruby 8

En Ruby, los arrays tienen otra característica interesante. Pueden contener diferentes tipos de datos al mismo tiempo. Por ejemplo, puedes almacenar cadenas, símbolos e incluso otros arrays:

Data Types in Ruby 9

Paso 6 – Símbolos

En Ruby, un símbolo es un tipo de datos especial que actúa como una etiqueta o un identificador. Los símbolos son inmutables, lo que significa que no se pueden cambiar. Los símbolos aparecen como si se declararan variables sin ningún valor.

Aquí hay un ejemplo de un símbolo:

Generalmente, los símbolos se utilizan para identificar algo importante. Para otras situaciones, sin embargo, las cadenas son más que suficientes.

Ruby, al ser un lenguaje orientado a objetos, trata todo como un objeto (incluidas las cadenas) con su ubicación de memoria única, incluso si las cadenas son idénticas. Sin embargo, cuando hace referencia a un símbolo, es el mismo objeto en todas partes del programa, la misma ubicación de memoria.

Paso 7 – Hashes

Un hash es una colección de claves y valores similar a un diccionario. A menudo, los hashes se utilizan para almacenar datos relacionados, por ejemplo, información sobre un usuario.

Aquí hay un ejemplo rápido de un hash. Hemos creado un hash user_info que contiene el nombre de usuario y la contraseña de un usuario:

Data Types in Ruby hashing in ruby

Para recuperar los valores de un par clave-valor, tenemos que usar la clave. El siguiente ejemplo demuestra este proceso:

Data Types in Ruby retrieve value using key

Ruby también permite definir un hash utilizando sintaxis ligeramente diferentes ( : en lugar de =>):

Data Types in Ruby retrieving value using key

Esta estructura de sintaxis es similar a la sintaxis utilizada en otros lenguajes, por ejemplo, JavaScript. En esta estructura de sintaxis, las claves se definen como símbolos. Es por eso que en lugar de usar "username", estamos usando: username para acceder al valor.

Tipado dinámico

Es posible que ya haya notado que al declarar una variable, no tenemos que asignar explícitamente un tipo de datos. En su lugar, el valor de la variable determina el tipo de datos. Ruby utiliza tipado dinámico donde la comprobación de tipos se realiza en tiempo de ejecución. Por el contrario, los tipos de datos se determinan durante la compilación en los lenguajes de programación de tipado estático (C/C++, por ejemplo).

En el siguiente ejemplo, todos los valores asignados a la variable dyn_var son válidos:

En los lenguajes de tipado dinámico, somos libres de reutilizar una variable existente para almacenar diferentes tipos de datos. Aquí, el ejemplo anterior se actualiza para demostrar este fenómeno:

dynamically typed variables

Como demuestra este ejemplo, cada vez que se asigna un nuevo valor, cambia el tipo de datos de dyn_var sobre la marcha. Es útil al convertir un tipo de datos a otro. El siguiente ejemplo demuestra esto:

get input and cast

Aquí,

  • Debido a que las entradas del teclado son cadenas, length es una cadena al principio.

  • Como nuestro valor deseado es un float, estamos convirtiendo el valor de la cadena a float usando el to_f método.

  • Debido al cambio de valor, length se le asigna el tipo de datos float. Esto es lo que vemos al imprimir su valor en la pantalla.

¿Qué pasaría si intentáramos mezclar dos tipos de datos diferentes? Ruby arrojará un error. Eche un vistazo:

mixing two datatypes

Identificación del tipo de datos

En Ruby, todo se trata como un objeto. Cada objeto en Ruby viene con el método class. Al llamarlo, este método indica cuál es el tipo de datos del origen. Aquí hay algunos ejemplos de uso del class método:

get classes name

Otra forma de saber el tipo de datos es usando el kind_of? método. Compara el tipo de datos del objeto con el tipo de datos solicitado y devuelve un valor booleano. Pruébalo en el siguiente ejemplo:

check datatype

De manera similar, existe otro método is_a? que compara el tipo de datos y devuelve un valor booleano. La única diferencia es la etiqueta del método. Sin embargo, puede ser preferible porque es un poco más fácil de leer y entender para los desarrolladores. Actualiza el ejemplo anterior con is_a?:

check datatype

Consideraciones finales

Trabajar con cualquier lenguaje de programación requiere una buena comprensión de los tipos de datos que admite. En esta guía, exploramos los tipos de datos más comunes utilizados en la programación de Ruby. Analizamos y demostramos enteros, flotantes, cadenas, símbolos, booleanos y hashes (con ejemplos).

Echa un vistazo a más tutoriales de nuestro blog que te ayudarán a explorar Ruby:

¡Feliz programación!

author

Preslav Dobrev

Autor · CloudSigma

Preslav Dobrev es diseñador creativo en CloudSigma, centrado en una identidad empresarial coherente mediante el uso de canales de marketing tradicionales e innovadores. Es experto en fusionar la visión artística con el marketing estratégico para crear narrativas de marca impactantes.

Comentarios

Aún no hay comentarios. Sea el primero.