• Like
Workshop Camp México 09 - Introducción a Ruby
Upcoming SlideShare
Loading in...5
×

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

  • 559 views
Uploaded on

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

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
  • Está dañado el archivo, no se puede ver al descargarlo.
    Are you sure you want to
    Your message goes here
    Be the first to like this
No Downloads

Views

Total Views
559
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
5
Comments
1
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Ruby Edgar J. Suárez e@dgar.org México on Rails http://MexicoOnRails.com.mx
  • 2. Historia
  • 3. Historia • Yukihiro “Matz” Matsumoto http://en.wikipedia.org/wiki/ Yukihiro_Matsumoto
  • 4. Historia • Yukihiro “Matz” Matsumoto • 1995 http://en.wikipedia.org/wiki/ Yukihiro_Matsumoto
  • 5. Historia • Yukihiro “Matz” Matsumoto • 1995 • 1.8, 1.9 http://en.wikipedia.org/wiki/ Yukihiro_Matsumoto
  • 6. Inspiraciones
  • 7. Inspiraciones • Perl
  • 8. Inspiraciones • Perl • Smalltalk
  • 9. Inspiraciones • Perl • Smalltalk • Eiffel
  • 10. Inspiraciones • Perl • Smalltalk • Eiffel • Ada
  • 11. Inspiraciones • Perl • Smalltalk • Eiffel • Ada • Lisp
  • 12. Implementaciones
  • 13. Implementaciones • YARV
  • 14. Implementaciones • YARV • JRuby
  • 15. Implementaciones • YARV • JRuby • Rubinius
  • 16. Implementaciones • YARV • JRuby • Rubinius • IronRuby
  • 17. Implementaciones
  • 18. Implementaciones • MacRuby
  • 19. Implementaciones • MacRuby • HotRuby
  • 20. Filosofía
  • 21. Filosofía “We need to focus on humans, on how humans care about doing programming or operating the aplication of the machine.
  • 22. 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”
  • 23. Iteraciones
  • 24. Iteraciones [“uno”, “dos”, “tres”].each do |item|
  • 25. Iteraciones [“uno”, “dos”, “tres”].each do |item| puts “#{item}...”
  • 26. Iteraciones [“uno”, “dos”, “tres”].each do |item| puts “#{item}...” end
  • 27. Iteraciones # => “uno...” # => “dos...” # => “tres...”
  • 28. Todo tiene un valor
  • 29. Todo tiene un valor x = if 1 > 2 “no es cierto” else “correcto” end
  • 30. Todo tiene un valor x = if 1 > 2 “no es cierto” else “correcto” end x # => “correcto”
  • 31. Todo tiene un valor
  • 32. Todo tiene un valor x = “uno NO es mayor” unless 2 > 1
  • 33. Todo tiene un valor x = “uno NO es mayor” unless 2 > 1 x # => nil
  • 34. Hashes • Colección de pares llave-valor
  • 35. Hashes • Colección de pares llave-valor h = {:x => 3, :y => 3.4, :name => “coords”}
  • 36. Hashes • Colección de pares llave-valor h = {:x => 3, :y => 3.4, :name => “coords”} h.keys # => [:x, :name, :y]
  • 37. 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]
  • 38. Símbolos
  • 39. Símbolos • Quién y no qué
  • 40. Símbolos • Quién y no qué “nombre”.object_id == “nombre”.object_id # => false
  • 41. Símbolos • Quién y no qué “nombre”.object_id == “nombre”.object_id # => false :nombre.object_id == :nombre.object_id # => true
  • 42. Rangos
  • 43. Rangos (1..2) # => 1..2
  • 44. Rangos (1..2) # => 1..2 (1..3).each { |i| puts i } # => 1 2 3
  • 45. Rangos (1..2) # => 1..2 (1..3).each { |i| puts i } # => 1 2 3 (1...3).each { |i| puts i } # => 1 2
  • 46. Rangos (1..2) # => 1..2 (1..3).each { |i| puts i } # => 1 2 3 (1...3).each { |i| puts i } # => 1 2
  • 47. Todo es un objeto
  • 48. Todo es un objeto persona = Persona.new persona.class # => Persona arreglo = Array.new arreglo.class # => Array
  • 49. 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
  • 50. Todo es un objeto
  • 51. Todo es un objeto 1.class # => Fixnum 3.2.class # => Float
  • 52. Todo es un objeto 1.class # => Fixnum 3.2.class # => Float nil.class # => NilClass true.class # => TrueClass false.class # => FalseClass Class.class # => Class
  • 53. La verdad • Todo lo que no sea nil o false, es verdadero.
  • 54. La verdad • Todo lo que no sea nil o false, es verdadero. “hola” ? true : false # => true 0 ? true : false # => true
  • 55. 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
  • 56. Clases class Persona def nombre puts “Edgar” end end
  • 57. Constructor
  • 58. Constructor class Persona def initialize(nombre) end end
  • 59. Constructor class Persona def initialize(nombre) @nombre = nombre end end
  • 60. Variables
  • 61. Variables • mi_variable = “Hola mundo”
  • 62. Variables • mi_variable = “Hola mundo” • @edad = 76
  • 63. Variables • mi_variable = “Hola mundo” • @edad = 76 • @@contador = 3
  • 64. Métodos class Persona end
  • 65. Métodos class Persona def metodo_de_instancia end end
  • 66. Métodos class Persona def metodo_de_instancia end def self.metodo_de_clase end end
  • 67. Métodos descriptivos
  • 68. Métodos descriptivos def es_administrador? true end
  • 69. Métodos descriptivos def es_administrador? true end def destruir_mundo! Gente.destroy_all end
  • 70. 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
  • 71. Modificadores de acceso class Persona def metodo_publico end def metodo_protegido end def metodo_privado end protected :metodo_protegido private :metodo_privado end
  • 72. Clases abiertas
  • 73. Clases abiertas class Persona def pedro puts “Pedro” end end p = Persona.new p.pedro # => Pedro
  • 74. 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
  • 75. Bloques
  • 76. Bloques 3.times do |i| puts i end
  • 77. Bloques 3.times do |i| puts i end b = Proc.new { puts “Hey” }
  • 78. Bloques 3.times do |i| puts i end b = Proc.new { puts “Hey” } b = lambda { puts “Hey” }
  • 79. Bloques 3.times do |i| puts i end b = Proc.new { puts “Hey” } b = lambda { puts “Hey” } b.call # => “Hey”
  • 80. Bloques
  • 81. Bloques def saludo yield end
  • 82. Bloques def saludo yield end saludo { puts “Hola Ruby” } # => “Hola Ruby”
  • 83. Bloques def saludo yield end saludo { puts “Hola Ruby” } # => “Hola Ruby” saludo { 1 + 3 } # => 4
  • 84. Bloques
  • 85. Bloques def saludo world = “Mundo” yield(world) end
  • 86. Bloques def saludo world = “Mundo” yield(world) end saludo { |w| puts “Hola #{w}” } # => “Hola Mundo”
  • 87. Bloques
  • 88. Bloques def por_dos(x) yield(x * 2) end
  • 89. Bloques def por_dos(x) yield(x * 2) end por_dos(2) { |i| i + 1 } # => 5
  • 90. Operadores
  • 91. Operadores 3 + 1 # => 4
  • 92. Operadores 3 + 1 # => 4 3.+(1) # => 4
  • 93. Operadores 3 + 1 # => 4 3.+(1) # => 4 x = [1, 2, 3] x[0] # => 1 x.[](0) # => 1
  • 94. Operadores 3 + 1 # => 4 3.+(1) # => 4 x = [1, 2, 3] x[0] # => 1 x.[](0) # => 1 x[1] = ‘dos’ x.[]=(1, ‘dos’)
  • 95. Operadores
  • 96. Operadores class Fixnum def +(i) self - i end def ==(otro) self == otro.to_i end end
  • 97. Metaprogramación
  • 98. Metaprogramación eval <<-eof def meta puts “No existo” end eof
  • 99. Metaprogramación eval <<-eof def meta puts “No existo” end eof meta # => “No existo”
  • 100. Metaprogramación
  • 101. Metaprogramación 3.times do |i| eval <<-eof def metodo_#{i} #{i} end eof end
  • 102. Metaprogramación 3.times do |i| eval <<-eof def metodo_#{i} #{i} end eof end metodo_0 # => 0 metodo_1 # => 1 metodo_2 # => 2
  • 103. Ruby Edgar J. Suárez e@dgar.org México on Rails http://MexicoOnRails.com.mx