VI. Tipos de datos


  • Ruby está orientado a objetos, lo que significa que todo es un objeto, incluso los tipos de datos en si

  • Existen varios tipos de datos en Ruby, siendo los principales Number (Integer y Float), String, Symbol y Boolean, y las estructuras como Hash y Array

  • Por su parte, un literal es cualquier notación que permita representar un valor fijo en el código fuente en base a un tipo de dato

  • Cada uno de las siguientes declaraciones se considera como un literal, y serán abordados en su respectivo espacio

375                      # Integer
3.141528                 # Float
'Hola mundo!'            # String
:symbol                  # Symbol
true                     # Boolean
nil                      # Nil
{ 'a' => 1, 'b' => 2 }   # Hash
[ 1, 2, 3 ]              # Array

2. Numbers

  • Existen dos tipos de datos number: los enteros (integer) y los de punto flotante o con decimal (float)

  • Un integer es un tipo de dato numérico que se usa para representar números del conjunto de los enteros (positivos, negativos y el 0)

  • Por su parte, un float es un tipo de dato numérico que se utiliza para representar números pertenecientes al conjunto de los reales (positivos con y sin decimal, negativos con y sin decimal y el 0), a una precisión fija o por establecer

# Dato integer
irb(main):000> 9
=> 9

# Dato float
irb(main):008> 17.51
=> 17.51

2.1. Operadores

# Suma
irb(main):000> 1 + 1
=> 2

# Resta
irb(main):000> 2 - 1.2
=> 0.8

# Multiplicación
irb(main):000> 2 * 2
=> 4

# División
irb(main):000> 10 / 5
=> 2

# Potencias
irb(main):000> 2 ** 2.2
=> 4.4

irb(main):000> 3 ** 4
=> 81

# Resto
irb(main):000> 8 % 2
=> 0

irb(main):000> 10 % 4
=> 2

# División entre int y float
irb(main):000> 17 / 5.0
=> 3.4

2.2. Conversiones

# Convertir entero a flotante
irb(main):000> 13.to_f
=> 13.0

# Convertir flotante a entero
irb(main):000> 13.9.to_i
=> 13

2.3. Algunos métodos numéricos

# Corroborar numero par
irb(main):000> 6.even?
=> true

irb(main):000> 7.even?
=> false

# Corroborar numero impar
irb(main):000> 6.odd?
=> false

irb(main):000> 7.odd?
=> true

3. String

  • Un string es un tipo de dato que permite representar una secuencia finita de caracteres (chars), también llamadas cadenas de texto

  • Se puede declarar entre comillas simples o entre comillas dobles

# Con comillas dobles
irb(main):000> "Hola mundo!"
=> "Hola mundo!"

# Con comillas simples
irb(main):000> 'Hola mundo!'
=> "Hola mundo!"

3.1. Concatenación

# Con operador +
irb(main):000> "Hola "+ "mundo" + "!"
=> "Hola mundo!"

# Con operadores <<
irb(main):000> "Me " << "llamo " << "Kenny"
=> "Me llamo Kenny"

# Con método .concat
irb(main):000> "Tengo".concat(" 29").concat(" años")
=> "Tengo 29 años"

3.2. Substrings

# Acceder a un solo elemento
irb(main):000> "ruby-testing"[0]
=> "r"

irb(main):000> "ruby-testing"[-0]
=> "r"

# Acceder a un solo elemento de forma inversa
irb(main):000> "ruby-testing"[-1]
=> "g"

# Acceder a grupo específico de elementos
irb(main):000> "ruby-testing"[4..6]
=> "-te"

# Acceder a grupo específico de elementos de forma inversa
irb(main):000> "ruby-testing"[-4..-1]
=> "ting"

# Acceder a un grupo sumado de elementos
irb(main):000> "ruby-testing"[4, 6]
=> "-testi"

irb(main):000> "ruby-testing"[4..9]
=> "-testi"

3.3. Caracteres de escape

\\  #=> Ingresar backslash escapado
\b  #=> Backspace
\r  #=> Retorno de carro CR
\n  #=> Nueva linea
\s  #=> Espacio
\t  #=> Tabulado
\"  #=> Ingresar comillas dobles
\'  #=> Ingresar comillas simples

3.4. Conversiones

# Entero a string
irb(main):000> 5.to_s
=> "5"

# Float a string
irb(main):000> 5.123.to_s
=> "5.123"

# Null a string
irb(main):000> nil.to_s
=> ""

# Symbol a string
irb(main):000> :symbol.to_s
=> "symbol"

3.5. Algunos métodos de strings

# Poner en mayúscula caracter inicial
irb(main):000> "ruby-testing".capitalize
=> "Ruby-testing"

# Grepear si se incluyen substrings (Case sensitive)
irb(main):000> "ruby-testing".include?("ruby")
=> true

irb(main):000> "ruby-testing".include?("RUBY")
=> false

irb(main):000> "ruby-testing".include?("HOLA")
=> false

# Convertir a mayúsculas
irb(main):000> "RUby".upcase
=> "RUBY"

# Convertir a minúsculas
irb(main):000> "RUby".downcase
=> "ruby"

# Analizar string vacía
irb(main):000> "".empty?
=> true

irb(main):000> "ruby-testing".empty?
=> false

# Imprimir largo de string
irb(main):000> "RUby".length
=> 4

# Imprimir en inverso
irb(main):000> "RUby".reverse
=> "ybUR"

# Splitear string
irb(main):000> "ruby testing".split
=> ["ruby", "testing"]

irb(main):000> "ruby testing".split("")
=> ["r", "u", "b", "y", " ", "t", "e", "s", "t", "i", "n", "g"]

# Eliminar espacios exteriores
irb(main):000> "     ruby     testing    ".strip
=> "ruby     testing"

# Sustituir un elemento del string
irb(main):000> "ruby".sub("u","4")
=> "r4by"

# Sustituir todos los elementos iguales de un string
irb(main):000> "ruby ruby ruby ruby".gsub("u","4")
=> "r4by r4by r4by r4by"

# Insertar string a uno ya existente
irb(main):000> "ruby".insert(0, "testing ")
=> "testing ruby"

irb(main):000> "ruby".insert(1, "testing ")
=> "rtesting uby"

irb(main):000> "ruby".insert(-1, " testing")
=> "ruby testing"

# Borrar elementos iguales de un tipo
irb(main):000> "ruby testing".delete("t")
=> "ruby esing"

# Insertar prefijo a string
irb(main):000> "!".prepend("ruby", " testing")
=> "ruby testing!"

4. Symbol

  • Un symbol es un tipo de dato usado para representar un identificador único e inmutable

  • Se utiliza generalmente como clave de hashes o para referir el nombre específico de un método

  • Se almacenan en memoria solo una vez, por lo que en ciertas ocasiones son mas eficientes al uso que los strings

  • Como parte de su estructura de definición, a su valor se le antepone el símbolo de dos puntos :

# Crear symbol
irb(main):000> :símbolo
=> :símbolo

irb(main):000> :"ejemplo de símbolo"
=> :"ejemplo de símbolo"

# Asignarle valor a un symbol mediante un hash
irb(main):000> edad = { :valor => 29 }
=> {:valor=>29}

irb(main):000> puts(edad)
{:valor=>30}
=> nil

irb(main):000> puts(edad[:valor])
29
=> nil

4.1. Strings vs symbols

# Comparativa entre valores de un mismo string
irb(main):000> "string" == "string"
=> true

# Comparativa entre valores de un mismo symbol
irb(main):000> :admin == :admin
=> true

# Comparativa entre id de objeto de un mismo string
irb(main):000> "string".object_id == "string".object_id
=> false

# Comparativa entre id de objeto de un mismo symbol
irb(main):000> :admin.object_id == :admin.object_id
=> true

4.2. Conversiones

# Convertir string a symbol
irb(main):000> "admin".to_sym
=> :admin

# Convertir symbol a string
irb(main):000> :admin.to_s
=> "admin"

4.3. Algunos métodos de symbols

# Longitud de symbol string a symbol
irb(main):000> :admin.length
=> 5

# Poner en mayúscula primer caracter
irb(main):000> :admin.capitalize
=> :Admin

# Poner todo en mayúscula
irb(main):000> :admin.upcase
=> :ADMIN

# Y así igual que el resto

5. Boolean

  • True = 1

  • False = 0

  • Nil = vacío, nada

irb(main):000> activo = true
=> true

irb(main):000> activo.class
=> TrueClass

Última actualización