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

839 visualizaciones

Publicado el

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

Publicado en: Tecnología
1 comentario
0 recomendaciones
Estadísticas
Notas
  • 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

Sin descargas
Visualizaciones
Visualizaciones totales
839
En SlideShare
0
De insertados
0
Número de insertados
50
Acciones
Compartido
0
Descargas
6
Comentarios
1
Recomendaciones
0
Insertados 0
No insertados

No hay notas en la diapositiva.
  • 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

    ×