ruby
DESCRIPTION
Presentación de Ruby para los alumnos de Inacap, realizada el 19 de noviembre de 2011 junto al grupo 7TalksTRANSCRIPT
@janogonzalez
jano gonzález
parte de
@7talks
desarrolla apps en
continuum
escribe el blog
gemaroja.com
organiza el meetup
@dynlangchile
QUÉ ES RUBY
lenguaje
dinámico
orientado a
objetos
poderosa
metaprogramación
sintaxis
concisa
es como
perl+smalltalk
historia
まつもとゆきひろ
Yukihiro Matsumoto
Matz
24/02/1993
idea
optimizar la
felicidad del desarrollador
21/12/1995
publicación
25/12/1996
versión 1.0
15/12/2001
pickaxe
david heinemeier hansson
DHH
2005
RAILS 1.0
ruby se hizo realmente
popular
alguna implementaciones:
mri, jruby, rubinius
el lenguaje
todo es un
objeto
objetos,
objetos en todos lados
objetos
# El clásicaico string“Hola Mundo”.upcase
# No hay "tipos primitivos"!5.zero?
# Hasta el nulo es un objetonil.nil?
objetos
# Arreglos[1, 2, 3, 4, 5]
# Hashes{:jano => "Alejandro", :cote => "José"}
# Rangos(1..10)
objetos
# Expresiones regulares/^[a-z]+$/
# Lambdaslambda { |n| n * 2 }
particularidades de los
métodos
métodos
# En realidad + es un método, noun operador1.+(9)
# Con un poco de azucar sintáctico1 + 9
# En otros objetos"Hola " + "Mundo"
# Con una gran cantidad de objetos![1, 2, 3] + [4, 5]
métodos
• Paréntesis opcionales
• ?
• !
usando
arrays
usando
hashes
otros
objetos
sentencias de
control
creando
claseS
CLASES
class Persona attr_reader :nombre, :apellido
def initialize(nombre, apellido) @nombre = nombre @apellido = apellido endend
jano = Persona.new("Jano", "González")jano.nombre
clases
# Monkey patchingclass Range def even self.select { |n| n % 2 == 0 } endend
(1..100).even
usando
bloques
bloques
# Un método puede recibir un bloque de código5.times do |n| puts nend
# Para casos cortos como el anterior...5.times { |n| puts n }
bloques
# El clásico map(1..100).map { |n| n * 2 }
# El clásico select(1..100).select { |n| n % 3 == 0 }
# El clásico reduce(1..100).reduce { |sum, n| sum + n }
# Incluso más corto(1..100).reduce(:+)
gemas
miles de
componentes
gemas
$ gem list
$ gem install sinatra
para aprender
ruby koans
rubykoans.com
ruby monk
rubymonk.com
visita
gemaroja.com