Charla introductoria al lenguaje Ruby dictada por Manuel Corrales, en el marco de los festejos del Software Freedom Day 2009 en la ciudad de Tandil, Argentina
8. Clases
Integer, Fixnum, Bignum, Float, ...
String
Array
dias = Array.new
dias.empty? => true
dias = Array.new(7, "today")
dias = [ "L", "M", "M", "J", "V", "S", "D" ]
Union, interseccion, diferencia
Date
DateTime
Time
9. Clases
Ranges
r = (1..10) # de 1 a 10 inclusive
r = (1...10) # de 1 to 9
r === 4 # => true
('k'..'z') === 'm' # => true
Hash
h = {'uno' => 1, 'dos' => 2}
h['uno'] # => 1
h['tres'] = 3
10. Simbolos
Es el elemento mas basico que se puede crear en
ruby.
Sintaxis:
:simbolo
Diferencia con String
puts "hola".object_id # 21066960
puts "hola".object_id # 21066730
puts :hola.object_id # 132178
puts :hola.object_id # 132178
Particularmente utiles para claves en Hash
persona[:nombre] = 'Pedro'
11. Clases
class Saludo
def initialize( quien )
@quien = quien
auxiliar = "local"
@@variable_de_clase = "prueba"
end
def deci_hola
"Hola #{@quien}!"
end
end
unSaludo = Saludo.new("Lucas")
unSaludo.deci_hola
# Hola Lucas!
12. Abierto
class Integer
def sumar(x)
self + x
end
end
y = 5.sumar 6
# ahora y vale 11
13. Herencia - Mixins - Modulos
Herencia simple
Modulos que se "mezclan"
Colecciones de metodos
Ejemplo: implementando each y/o
<=> puedo mezclar Enumerable
class Perro < Animal
end
class MiArreglo
include Enumerable
end
min, max, sort, include?, ....
14. Verdades
En Ruby, todo excepto nil y false es
considerado true.
if 0
true
else
false
end
# => true
15. Iteradores
Cada objeto debe saber como "iterarse"
# numeros = [1,2,3,4,5,6,7,8, 9,10]
numeros = (1..10).to_a
numeros.each do |n|
puts n
end
pares = numeros.select do |n|
n % 2 == 0
end
16. Iteradores
Iteraciones estilo ruby
5.times do
puts "hola"
end
5.upto(10) do |index|
puts "hola #{index}"
end
15.downto(10) do
puts "hola"
end
17. Manejo de excepciones
begin
sum / 0
rescue ZeroDivisionError => e
puts "Error: #{sum} / 0"
ensure
end
19. Sugerencias
Tests, tests, tests.
Manejo de versiones "desprolijo"
20. Desarrollo de aplicaciones
Aplicaciones de escritorio
Ruby Tk
Ruby-gnome2 (ruby-gnome2.sourceforge.jp/)
Ruby + Swing (java)
Ruby / Qt
WxRuby
FxRuby
Aplicaciones web
Ruby on Rails
IDE
Netbeans
Aptana (Eclipse plugin)