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