• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Workshop Camp México 09 - Introducción a Ruby
 

Workshop Camp México 09 - Introducción a Ruby

on

  • 991 views

Introducción a Ruby en el WorkshopCamp México 09

Introducción a Ruby en el WorkshopCamp México 09

Statistics

Views

Total Views
991
Views on SlideShare
950
Embed Views
41

Actions

Likes
0
Downloads
5
Comments
1

3 Embeds 41

http://coderwall.com 39
http://www.slideshare.net 1
http://www.linkedin.com 1

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1 previous next

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • Está dañado el archivo, no se puede ver al descargarlo.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Workshop Camp México 09 - Introducción a Ruby Workshop Camp México 09 - Introducción a Ruby Presentation Transcript

  • Ruby Edgar J. Suárez e@dgar.org México on Rails http://MexicoOnRails.com.mx
  • Historia
  • Historia • Yukihiro “Matz” Matsumoto http://en.wikipedia.org/wiki/ Yukihiro_Matsumoto
  • Historia • Yukihiro “Matz” Matsumoto • 1995 http://en.wikipedia.org/wiki/ Yukihiro_Matsumoto
  • Historia • Yukihiro “Matz” Matsumoto • 1995 • 1.8, 1.9 http://en.wikipedia.org/wiki/ Yukihiro_Matsumoto
  • Inspiraciones
  • Inspiraciones • Perl
  • Inspiraciones • Perl • Smalltalk
  • Inspiraciones • Perl • Smalltalk • Eiffel
  • Inspiraciones • Perl • Smalltalk • Eiffel • Ada
  • Inspiraciones • Perl • Smalltalk • Eiffel • Ada • Lisp
  • Implementaciones
  • Implementaciones • YARV
  • Implementaciones • YARV • JRuby
  • Implementaciones • YARV • JRuby • Rubinius
  • Implementaciones • YARV • JRuby • Rubinius • IronRuby
  • Implementaciones
  • Implementaciones • MacRuby
  • Implementaciones • MacRuby • HotRuby
  • Filosofía
  • Filosofía “We need to focus on humans, on how humans care about doing programming or operating the aplication of the machine.
  • Filosofía “We need to focus on humans, on how humans care about doing programming or operating the aplication of the machine. We are the masters.They are the slaves”
  • Iteraciones
  • Iteraciones [“uno”, “dos”, “tres”].each do |item|
  • Iteraciones [“uno”, “dos”, “tres”].each do |item| puts “#{item}...”
  • Iteraciones [“uno”, “dos”, “tres”].each do |item| puts “#{item}...” end
  • Iteraciones # => “uno...” # => “dos...” # => “tres...”
  • Todo tiene un valor
  • Todo tiene un valor x = if 1 > 2 “no es cierto” else “correcto” end
  • Todo tiene un valor x = if 1 > 2 “no es cierto” else “correcto” end x # => “correcto”
  • Todo tiene un valor
  • Todo tiene un valor x = “uno NO es mayor” unless 2 > 1
  • Todo tiene un valor x = “uno NO es mayor” unless 2 > 1 x # => nil
  • Hashes • Colección de pares llave-valor
  • Hashes • Colección de pares llave-valor h = {:x => 3, :y => 3.4, :name => “coords”}
  • Hashes • Colección de pares llave-valor h = {:x => 3, :y => 3.4, :name => “coords”} h.keys # => [:x, :name, :y]
  • Hashes • Colección de pares llave-valor h = {:x => 3, :y => 3.4, :name => “coords”} h.keys # => [:x, :name, :y] h.values # => [3, "coords", 3.4]
  • Símbolos
  • Símbolos • Quién y no qué
  • Símbolos • Quién y no qué “nombre”.object_id == “nombre”.object_id # => false
  • Símbolos • Quién y no qué “nombre”.object_id == “nombre”.object_id # => false :nombre.object_id == :nombre.object_id # => true
  • Rangos
  • Rangos (1..2) # => 1..2
  • Rangos (1..2) # => 1..2 (1..3).each { |i| puts i } # => 1 2 3
  • Rangos (1..2) # => 1..2 (1..3).each { |i| puts i } # => 1 2 3 (1...3).each { |i| puts i } # => 1 2
  • Rangos (1..2) # => 1..2 (1..3).each { |i| puts i } # => 1 2 3 (1...3).each { |i| puts i } # => 1 2
  • Todo es un objeto
  • Todo es un objeto persona = Persona.new persona.class # => Persona arreglo = Array.new arreglo.class # => Array
  • Todo es un objeto persona = Persona.new persona.class # => Persona arreglo = Array.new arreglo.class # => Array arreglo = [] arreglo.class # => Array obj = Object.new obj.class # => Object
  • Todo es un objeto
  • Todo es un objeto 1.class # => Fixnum 3.2.class # => Float
  • Todo es un objeto 1.class # => Fixnum 3.2.class # => Float nil.class # => NilClass true.class # => TrueClass false.class # => FalseClass Class.class # => Class
  • La verdad • Todo lo que no sea nil o false, es verdadero.
  • La verdad • Todo lo que no sea nil o false, es verdadero. “hola” ? true : false # => true 0 ? true : false # => true
  • La verdad • Todo lo que no sea nil o false, es verdadero. “hola” ? true : false # => true 0 ? true : false # => true nil ? true : false # => false false ? true : false # => false
  • Clases class Persona def nombre puts “Edgar” end end
  • Constructor
  • Constructor class Persona def initialize(nombre) end end
  • Constructor class Persona def initialize(nombre) @nombre = nombre end end
  • Variables
  • Variables • mi_variable = “Hola mundo”
  • Variables • mi_variable = “Hola mundo” • @edad = 76
  • Variables • mi_variable = “Hola mundo” • @edad = 76 • @@contador = 3
  • Métodos class Persona end
  • Métodos class Persona def metodo_de_instancia end end
  • Métodos class Persona def metodo_de_instancia end def self.metodo_de_clase end end
  • Métodos descriptivos
  • Métodos descriptivos def es_administrador? true end
  • Métodos descriptivos def es_administrador? true end def destruir_mundo! Gente.destroy_all end
  • Modificadores de acceso class Persona def metodo_publico end protected def metodo_protegido end def otro_metodo_protegido end private def metodo_privado end end
  • Modificadores de acceso class Persona def metodo_publico end def metodo_protegido end def metodo_privado end protected :metodo_protegido private :metodo_privado end
  • Clases abiertas
  • Clases abiertas class Persona def pedro puts “Pedro” end end p = Persona.new p.pedro # => Pedro
  • Clases abiertas class Persona def pedro puts “Pedro” end end p = Persona.new p.pedro # => Pedro class Persona def paco puts “Paco” end end p.paco # => Paco
  • Bloques
  • Bloques 3.times do |i| puts i end
  • Bloques 3.times do |i| puts i end b = Proc.new { puts “Hey” }
  • Bloques 3.times do |i| puts i end b = Proc.new { puts “Hey” } b = lambda { puts “Hey” }
  • Bloques 3.times do |i| puts i end b = Proc.new { puts “Hey” } b = lambda { puts “Hey” } b.call # => “Hey”
  • Bloques
  • Bloques def saludo yield end
  • Bloques def saludo yield end saludo { puts “Hola Ruby” } # => “Hola Ruby”
  • Bloques def saludo yield end saludo { puts “Hola Ruby” } # => “Hola Ruby” saludo { 1 + 3 } # => 4
  • Bloques
  • Bloques def saludo world = “Mundo” yield(world) end
  • Bloques def saludo world = “Mundo” yield(world) end saludo { |w| puts “Hola #{w}” } # => “Hola Mundo”
  • Bloques
  • Bloques def por_dos(x) yield(x * 2) end
  • Bloques def por_dos(x) yield(x * 2) end por_dos(2) { |i| i + 1 } # => 5
  • Operadores
  • Operadores 3 + 1 # => 4
  • Operadores 3 + 1 # => 4 3.+(1) # => 4
  • Operadores 3 + 1 # => 4 3.+(1) # => 4 x = [1, 2, 3] x[0] # => 1 x.[](0) # => 1
  • Operadores 3 + 1 # => 4 3.+(1) # => 4 x = [1, 2, 3] x[0] # => 1 x.[](0) # => 1 x[1] = ‘dos’ x.[]=(1, ‘dos’)
  • Operadores
  • Operadores class Fixnum def +(i) self - i end def ==(otro) self == otro.to_i end end
  • Metaprogramación
  • Metaprogramación eval <<-eof def meta puts “No existo” end eof
  • Metaprogramación eval <<-eof def meta puts “No existo” end eof meta # => “No existo”
  • Metaprogramación
  • Metaprogramación 3.times do |i| eval <<-eof def metodo_#{i} #{i} end eof end
  • Metaprogramación 3.times do |i| eval <<-eof def metodo_#{i} #{i} end eof end metodo_0 # => 0 metodo_1 # => 1 metodo_2 # => 2
  • Ruby Edgar J. Suárez e@dgar.org México on Rails http://MexicoOnRails.com.mx