Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

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

886 visualizaciones

Publicado el

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

Publicado en: Tecnología
  • Está dañado el archivo, no se puede ver al descargarlo.
       Responder 
    ¿Estás seguro?    No
    Tu mensaje aparecerá aquí
  • Sé el primero en recomendar esto

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

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

×