Upload
flekoso
View
1.319
Download
0
Embed Size (px)
DESCRIPTION
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
Citation preview
Los ideales del creador de Ruby
Yukhiro “matz” MatsumotoMezcla:
PerlSmalltalkEiffelAdaLisp
Ruby como un lenguaje natural, no simple
Los ideales del creador de Ruby
Ruby es totalmente libre. No sólo gratis, sino también libre para usarlo, copiarlo, modificarlo y distribuirlo.
Historia
Iniciado en 1993. Liberado al público en 1995. Version 1.0 a fines de 1996.Reconocimiento masivo en 2006. Version actual 1.9.x
Caracteristicas
Interpretado.Portable. Dinamico. Orientado a objetos.Flexible (abierto).Mixines.Manejo de excepciones.
Instalación / como empezar
Interprete irbArchivos con extension .rbBinario rubyEjecutando:
ruby programa.rbLIbrerias (gemas)
gem install <nombre>
Orientado a objetos
"Todo es un objeto"
5.times { print "Hola mundo" }
Clases
Integer, Fixnum, Bignum, Float, ...String Array
dias = Array.newdias.empty? => truedias = Array.new(7, "today")dias = [ "L", "M", "M", "J", "V", "S", "D" ]Union, interseccion, diferencia
DateDateTimeTime
Clases
Ranges r = (1..10) # de 1 a 10 inclusive r = (1...10) # de 1 to 9 r === 4 # => true ('k'..'z') === 'm' # => true
Hashh = {'uno' => 1, 'dos' => 2}h['uno'] # => 1h['tres'] = 3
Simbolos
Es el elemento mas basico que se puede crear en ruby.Sintaxis:
:simboloDiferencia con String
puts "hola".object_id # 21066960puts "hola".object_id # 21066730puts :hola.object_id # 132178puts :hola.object_id # 132178
Particularmente utiles para claves en Hash persona[:nombre] = 'Pedro'
Clases
class Saludo def initialize( quien ) @quien = quien auxiliar = "local" @@variable_de_clase = "prueba" end
def deci_hola "Hola #{@quien}!" endend
unSaludo = Saludo.new("Lucas")unSaludo.deci_hola# Hola Lucas!
Abierto
class Integer def sumar(x) self + x endend
y = 5.sumar 6# ahora y vale 11
Herencia - Mixins - Modulos
class Perro < Animalend class MiArreglo include Enumerable end
Herencia simpleModulos que se "mezclan"
Colecciones de metodosEjemplo: implementando each y/o <=> puedo mezclar Enumerable
min, max, sort, include?, ....
Verdades
En Ruby, todo excepto nil y false es considerado true.
if 0 trueelse falseend# => true
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 nend pares = numeros.select do |n| n % 2 == 0end
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
Manejo de excepciones
begin sum / 0rescue ZeroDivisionError => e puts "Error: #{sum} / 0"ensure end
Quedaron afuera...
Bloques.Expresiones regularesYAMLReflection
Sugerencias
Tests, tests, tests.Manejo de versiones "desprolijo"
Desarrollo de aplicaciones
Aplicaciones de escritorio Ruby Tk Ruby-gnome2 (ruby-gnome2.sourceforge.jp/)Ruby + Swing (java)Ruby / QtWxRubyFxRuby
Aplicaciones webRuby on Rails
IDENetbeansAptana (Eclipse plugin)
Ejemplos
Twitter (http://www.twitter.com/)Github (http://www.github.com/)Justin.tv (http://www.justin.tv/)SUSE Studio (http://susestudio.com) Watir (http://rubyforge.org/projects/wtr/)