Caracteres especiales
Dentro de una expresión regular pueden usarse estos códigos:
+ para indicar uno o más caracteres.
* para indicar ninguno o más caracteres
\s un caracter de espaciado (espacio, tabulador, avance de línea).
\d un caracter dígito.
\w un caracter alfabético.
. (punto) para cualquier caracter.
Ejemplos:
puts «La hora es correcta» if hora ~= /\d\d:\d\d/
puts «Es un archivo AVI» if archivo ~= /.+\.avi/
Reemplazo de texto
Para sustituir la primer aparición de Perl por Ruby.
linea.sub(/Perl/, ’Ruby’)
Para sustituir todos los Perl.
linea.gsub(/Perl/, ’Ruby’)
Para sustituir todos los Perl y Phyton
linea.gsub(/Perl|Phyton/, ’Ruby’)
Bloques
Un bloque es un conjunto de intrucciones entre llaves…
{ puts «Gracias por asistir al taller.» }
O entre un do y un end…
do
contador += 1
puts «Van #{contador} ciclos.»
end
Un bloque puede será ejecutado por una invocación.
Ejemplo
En este ejemplo, el bloque es ejecutado en cada yeild.
def hacer_documento
puts «Incio del documento»
yeild
yeild
puts «Fin del documento»
end
hacer_documento { puts «contenido» }
Iteradores
Un iterador es un método que entrega elementos de alguna clase de colección. Necesita un bloque con las instrucciones a realizar.
animales = %w{ hormiga abeja gato perro ratón }
animales.each { |animal| puts animal }
Muchas formas de bucles pueden hacerse por iteradores.
5.times { puts «¡Gracias por tomar este taller!» }
1.upto(10) { |n| puts «2 x #{n} = #{2*n}» }
(’a’..’z’).each { |letra| print letra }
Clases
Una clase es un conjunto de métodos con propiedades.
class Persona
def initialize(parametro)
@nombre = parametro
end
def cantidad
@nombre.length
end
def al_reves
@nombre.reverse
end
end
Objetos
Creamos objetos o instancias de una clase con new.
per1 = Persona.new(’David’)
per2 = Persona.new(’Ricardo’)
per3 = Persona.new(’Rosa María’)
tot = per1.cantidad + per2.cantidad + per3.cantidad
rev = «#{per1.al_reves}, #{per2.al_reves}, #{per3.al_reves}»
puts «La suma de las cantidades de letras es #{tot}.»
puts «Y los nombres al revés son #{rev}.»