パネル A3 outline - Matsumoto...Title パネル_A3_outline Created Date 3/25/2019 2:52:11 PM
Esteban Manchado Vel´azquez [email protected]/charlas/ruby.pdf · Nacimiento de Ruby • Lo...
Transcript of Esteban Manchado Vel´azquez [email protected]/charlas/ruby.pdf · Nacimiento de Ruby • Lo...
![Page 2: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/2.jpg)
Indice
1 IntroduccionAntes de nada...Sobre el lenguaje
2 El lenguajeA grandes rasgosMas caracterısticas
3 Extras del DVDMixinReflexion
![Page 3: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/3.jpg)
Indice
1 IntroduccionAntes de nada...Sobre el lenguaje
2 El lenguajeA grandes rasgosMas caracterısticas
3 Extras del DVDMixinReflexion
![Page 4: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/4.jpg)
Sobre esta charla
• No se va a ensenar a programar
• Espero que eso sea un alivio
• Presentacion a grandes rasgos (falta de tiempo)
• Mas en Rubıes (http://www.ruby.org.es)
![Page 5: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/5.jpg)
Sobre esta charla
• No se va a ensenar a programar
• Espero que eso sea un alivio
• Presentacion a grandes rasgos (falta de tiempo)
• Mas en Rubıes (http://www.ruby.org.es)
![Page 6: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/6.jpg)
Sobre esta charla
• No se va a ensenar a programar
• Espero que eso sea un alivio
• Presentacion a grandes rasgos (falta de tiempo)
• Mas en Rubıes (http://www.ruby.org.es)
![Page 7: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/7.jpg)
Sobre esta charla
• No se va a ensenar a programar
• Espero que eso sea un alivio
• Presentacion a grandes rasgos (falta de tiempo)
• Mas en Rubıes (http://www.ruby.org.es)
![Page 8: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/8.jpg)
Indice
1 IntroduccionAntes de nada...Sobre el lenguaje
2 El lenguajeA grandes rasgosMas caracterısticas
3 Extras del DVDMixinReflexion
![Page 9: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/9.jpg)
Nacimiento de Ruby
• Lo invento un japones llamado Yukihiro Matsumoto
• Todo el mundo lo conoce como matz• ((Ruby)) viene de Perl → Pearl• I wanted a scripting language that was more powerful than
Perl, and more object-oriented than Python• They are focusing on machines. But in fact we need to focus
on humans, on how humans care about doing programming oroperating the application of the machines. We are themasters. They are the slaves
• Don’t underestimate the human factor. Even though we are infront of computers, they are media. We are working forhuman, with human
• You want to enjoy life, don’t you? If you get your job donequickly and your job is fun, that’s good, isn’t it? That’s thepurpose of life, partly. Your life is better
![Page 10: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/10.jpg)
Nacimiento de Ruby
• Lo invento un japones loco llamado Yukihiro Matsumoto• Todo el mundo lo conoce como matz
• ((Ruby)) viene de Perl → Pearl• I wanted a scripting language that was more powerful than
Perl, and more object-oriented than Python• They are focusing on machines. But in fact we need to focus
on humans, on how humans care about doing programming oroperating the application of the machines. We are themasters. They are the slaves
• Don’t underestimate the human factor. Even though we are infront of computers, they are media. We are working forhuman, with human
• You want to enjoy life, don’t you? If you get your job donequickly and your job is fun, that’s good, isn’t it? That’s thepurpose of life, partly. Your life is better
![Page 11: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/11.jpg)
Nacimiento de Ruby
• Lo invento un japones loco llamado Yukihiro Matsumoto
• Todo el mundo lo conoce como matz
• ((Ruby)) viene de Perl → Pearl
• I wanted a scripting language that was more powerful thanPerl, and more object-oriented than Python
• They are focusing on machines. But in fact we need to focuson humans, on how humans care about doing programming oroperating the application of the machines. We are themasters. They are the slaves
• Don’t underestimate the human factor. Even though we are infront of computers, they are media. We are working forhuman, with human
• You want to enjoy life, don’t you? If you get your job donequickly and your job is fun, that’s good, isn’t it? That’s thepurpose of life, partly. Your life is better
![Page 12: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/12.jpg)
Nacimiento de Ruby
• Lo invento un japones loco llamado Yukihiro Matsumoto
• Todo el mundo lo conoce como matz
• ((Ruby)) viene de Perl → Pearl
• I wanted a scripting language that was more powerful thanPerl, and more object-oriented than Python
• They are focusing on machines. But in fact we need to focuson humans, on how humans care about doing programming oroperating the application of the machines. We are themasters. They are the slaves
• Don’t underestimate the human factor. Even though we are infront of computers, they are media. We are working forhuman, with human
• You want to enjoy life, don’t you? If you get your job donequickly and your job is fun, that’s good, isn’t it? That’s thepurpose of life, partly. Your life is better
![Page 13: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/13.jpg)
Nacimiento de Ruby
• Lo invento un japones loco llamado Yukihiro Matsumoto
• Todo el mundo lo conoce como matz
• ((Ruby)) viene de Perl → Pearl
• I wanted a scripting language that was more powerful thanPerl, and more object-oriented than Python
• They are focusing on machines. But in fact we need to focuson humans, on how humans care about doing programming oroperating the application of the machines. We are themasters. They are the slaves
• Don’t underestimate the human factor. Even though we are infront of computers, they are media. We are working forhuman, with human
• You want to enjoy life, don’t you? If you get your job donequickly and your job is fun, that’s good, isn’t it? That’s thepurpose of life, partly. Your life is better
![Page 14: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/14.jpg)
Nacimiento de Ruby
• Lo invento un japones loco llamado Yukihiro Matsumoto
• Todo el mundo lo conoce como matz
• ((Ruby)) viene de Perl → Pearl
• I wanted a scripting language that was more powerful thanPerl, and more object-oriented than Python
• They are focusing on machines. But in fact we need to focuson humans, on how humans care about doing programming oroperating the application of the machines. We are themasters. They are the slaves
• Don’t underestimate the human factor. Even though we are infront of computers, they are media. We are working forhuman, with human
• You want to enjoy life, don’t you? If you get your job donequickly and your job is fun, that’s good, isn’t it? That’s thepurpose of life, partly. Your life is better
![Page 15: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/15.jpg)
Nacimiento de Ruby
• Lo invento un japones loco llamado Yukihiro Matsumoto
• Todo el mundo lo conoce como matz
• ((Ruby)) viene de Perl → Pearl
• I wanted a scripting language that was more powerful thanPerl, and more object-oriented than Python
• They are focusing on machines. But in fact we need to focuson humans, on how humans care about doing programming oroperating the application of the machines. We are themasters. They are the slaves
• Don’t underestimate the human factor. Even though we are infront of computers, they are media. We are working forhuman, with human
• You want to enjoy life, don’t you? If you get your job donequickly and your job is fun, that’s good, isn’t it? That’s thepurpose of life, partly. Your life is better
![Page 16: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/16.jpg)
Caracterısticas
• ((Perl moderno)), ((Perl orientado a objetos))
• Completamente orientado a objetos (¡hasta nil!)
• Sintaxis limpia, modo poesıa, ((sufijos)) de sentencias
• Sangrado libre, marcas de fin de estructura
• Uso de mayusculas y minusculas (constantes, variables)
• Se usan mucho los bloques (funciones anonimas)
• Documentacion empotrada
• Inmaduro (cambios, pocos modulos de desarrollo activo)
• Comunidad abierta (refugiados; RoR)
![Page 17: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/17.jpg)
Caracterısticas
• ((Perl moderno)), ((Perl orientado a objetos))
• Completamente orientado a objetos (¡hasta nil!)
• Sintaxis limpia, modo poesıa, ((sufijos)) de sentencias
• Sangrado libre, marcas de fin de estructura
• Uso de mayusculas y minusculas (constantes, variables)
• Se usan mucho los bloques (funciones anonimas)
• Documentacion empotrada
• Inmaduro (cambios, pocos modulos de desarrollo activo)
• Comunidad abierta (refugiados; RoR)
![Page 18: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/18.jpg)
Caracterısticas
• ((Perl moderno)), ((Perl orientado a objetos))
• Completamente orientado a objetos (¡hasta nil!)
• Sintaxis limpia, modo poesıa, ((sufijos)) de sentencias
• Sangrado libre, marcas de fin de estructura
• Uso de mayusculas y minusculas (constantes, variables)
• Se usan mucho los bloques (funciones anonimas)
• Documentacion empotrada
• Inmaduro (cambios, pocos modulos de desarrollo activo)
• Comunidad abierta (refugiados; RoR)
![Page 19: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/19.jpg)
Caracterısticas
• ((Perl moderno)), ((Perl orientado a objetos))
• Completamente orientado a objetos (¡hasta nil!)
• Sintaxis limpia, modo poesıa, ((sufijos)) de sentencias
• Sangrado libre, marcas de fin de estructura
• Uso de mayusculas y minusculas (constantes, variables)
• Se usan mucho los bloques (funciones anonimas)
• Documentacion empotrada
• Inmaduro (cambios, pocos modulos de desarrollo activo)
• Comunidad abierta (refugiados; RoR)
![Page 20: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/20.jpg)
Caracterısticas
• ((Perl moderno)), ((Perl orientado a objetos))
• Completamente orientado a objetos (¡hasta nil!)
• Sintaxis limpia, modo poesıa, ((sufijos)) de sentencias
• Sangrado libre, marcas de fin de estructura
• Uso de mayusculas y minusculas (constantes, variables)
• Se usan mucho los bloques (funciones anonimas)
• Documentacion empotrada
• Inmaduro (cambios, pocos modulos de desarrollo activo)
• Comunidad abierta (refugiados; RoR)
![Page 21: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/21.jpg)
Caracterısticas
• ((Perl moderno)), ((Perl orientado a objetos))
• Completamente orientado a objetos (¡hasta nil!)
• Sintaxis limpia, modo poesıa, ((sufijos)) de sentencias
• Sangrado libre, marcas de fin de estructura
• Uso de mayusculas y minusculas (constantes, variables)
• Se usan mucho los bloques (funciones anonimas)
• Documentacion empotrada
• Inmaduro (cambios, pocos modulos de desarrollo activo)
• Comunidad abierta (refugiados; RoR)
![Page 22: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/22.jpg)
Caracterısticas
• ((Perl moderno)), ((Perl orientado a objetos))
• Completamente orientado a objetos (¡hasta nil!)
• Sintaxis limpia, modo poesıa, ((sufijos)) de sentencias
• Sangrado libre, marcas de fin de estructura
• Uso de mayusculas y minusculas (constantes, variables)
• Se usan mucho los bloques (funciones anonimas)
• Documentacion empotrada
• Inmaduro (cambios, pocos modulos de desarrollo activo)
• Comunidad abierta (refugiados; RoR)
![Page 23: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/23.jpg)
Caracterısticas
• ((Perl moderno)), ((Perl orientado a objetos))
• Completamente orientado a objetos (¡hasta nil!)
• Sintaxis limpia, modo poesıa, ((sufijos)) de sentencias
• Sangrado libre, marcas de fin de estructura
• Uso de mayusculas y minusculas (constantes, variables)
• Se usan mucho los bloques (funciones anonimas)
• Documentacion empotrada
• Inmaduro (cambios, pocos modulos de desarrollo activo)
• Comunidad abierta (refugiados; RoR)
![Page 24: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/24.jpg)
Caracterısticas
• ((Perl moderno)), ((Perl orientado a objetos))
• Completamente orientado a objetos (¡hasta nil!)
• Sintaxis limpia, modo poesıa, ((sufijos)) de sentencias
• Sangrado libre, marcas de fin de estructura
• Uso de mayusculas y minusculas (constantes, variables)
• Se usan mucho los bloques (funciones anonimas)
• Documentacion empotrada
• Inmaduro (cambios, pocos modulos de desarrollo activo)
• Comunidad abierta (refugiados; RoR)
![Page 25: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/25.jpg)
Para aprender...
• Entre Perl y Python en cuanto a integracion
• Consola interactiva: irb
• Documentacion empotrada de referencia: rdoc
• Consulta de documentacion, ayuda interactiva: ri e ihelp
• Consulta de documentacion en web:http://www.ruby-doc.org/find/pickaxe/string
• En el caso de Rails y otros, de moda los vıdeos
![Page 26: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/26.jpg)
Para aprender...
• Entre Perl y Python en cuanto a integracion
• Consola interactiva: irb
• Documentacion empotrada de referencia: rdoc
• Consulta de documentacion, ayuda interactiva: ri e ihelp
• Consulta de documentacion en web:http://www.ruby-doc.org/find/pickaxe/string
• En el caso de Rails y otros, de moda los vıdeos
![Page 27: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/27.jpg)
Para aprender...
• Entre Perl y Python en cuanto a integracion
• Consola interactiva: irb
• Documentacion empotrada de referencia: rdoc
• Consulta de documentacion, ayuda interactiva: ri e ihelp
• Consulta de documentacion en web:http://www.ruby-doc.org/find/pickaxe/string
• En el caso de Rails y otros, de moda los vıdeos
![Page 28: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/28.jpg)
Para aprender...
• Entre Perl y Python en cuanto a integracion
• Consola interactiva: irb
• Documentacion empotrada de referencia: rdoc
• Consulta de documentacion, ayuda interactiva: ri e ihelp
• Consulta de documentacion en web:http://www.ruby-doc.org/find/pickaxe/string
• En el caso de Rails y otros, de moda los vıdeos
![Page 29: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/29.jpg)
Para aprender...
• Entre Perl y Python en cuanto a integracion
• Consola interactiva: irb
• Documentacion empotrada de referencia: rdoc
• Consulta de documentacion, ayuda interactiva: ri e ihelp
• Consulta de documentacion en web:http://www.ruby-doc.org/find/pickaxe/string
• En el caso de Rails y otros, de moda los vıdeos
![Page 30: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/30.jpg)
Para aprender...
• Entre Perl y Python en cuanto a integracion
• Consola interactiva: irb
• Documentacion empotrada de referencia: rdoc
• Consulta de documentacion, ayuda interactiva: ri e ihelp
• Consulta de documentacion en web:http://www.ruby-doc.org/find/pickaxe/string
• En el caso de Rails y otros, de moda los vıdeos
![Page 31: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/31.jpg)
Indice
1 IntroduccionAntes de nada...Sobre el lenguaje
2 El lenguajeA grandes rasgosMas caracterısticas
3 Extras del DVDMixinReflexion
![Page 32: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/32.jpg)
Micro-intro a la OO
• Clases de objetos
• Los objetos responden a metodos
• Los objetos tienen atributos
• Las clases heredan de otras
• Al menos teoricamente, la OO nos hace natural pensar enterminos que facilitan reducir el acoplamiento entre conceptosdiferentes
• No les culpare si no se lo tragan
![Page 33: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/33.jpg)
Micro-intro a la OO
• Clases de objetos
• Los objetos responden a metodos
• Los objetos tienen atributos
• Las clases heredan de otras
• Al menos teoricamente, la OO nos hace natural pensar enterminos que facilitan reducir el acoplamiento entre conceptosdiferentes
• No les culpare si no se lo tragan
![Page 34: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/34.jpg)
Micro-intro a la OO
• Clases de objetos
• Los objetos responden a metodos
• Los objetos tienen atributos
• Las clases heredan de otras
• Al menos teoricamente, la OO nos hace natural pensar enterminos que facilitan reducir el acoplamiento entre conceptosdiferentes
• No les culpare si no se lo tragan
![Page 35: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/35.jpg)
Micro-intro a la OO
• Clases de objetos
• Los objetos responden a metodos
• Los objetos tienen atributos
• Las clases heredan de otras
• Al menos teoricamente, la OO nos hace natural pensar enterminos que facilitan reducir el acoplamiento entre conceptosdiferentes
• No les culpare si no se lo tragan
![Page 36: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/36.jpg)
Micro-intro a la OO
• Clases de objetos
• Los objetos responden a metodos
• Los objetos tienen atributos
• Las clases heredan de otras
• Al menos teoricamente, la OO nos hace natural pensar enterminos que facilitan reducir el acoplamiento entre conceptosdiferentes
• No les culpare si no se lo tragan
![Page 37: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/37.jpg)
Micro-intro a la OO
• Clases de objetos
• Los objetos responden a metodos
• Los objetos tienen atributos
• Las clases heredan de otras
• Al menos teoricamente, la OO nos hace natural pensar enterminos que facilitan reducir el acoplamiento entre conceptosdiferentes
• No les culpare si no se lo tragan
![Page 38: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/38.jpg)
OO en Ruby
• Simple, comoda de escribir
• Es la forma natural de resolver los problemas
• Herencia simple
• Metodos terminados en ((!)) y ((?))
• Metodos especiales ((=)) para caramelos sintacticos
• No existen los atributos (desde fuera)
• Se usa ((@)) y ((@@)) para los atributos de objeto/clase
• Se puede escribir en estilo no OO, pero en realidad es OO
![Page 39: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/39.jpg)
OO en Ruby
• Simple, comoda de escribir
• Es la forma natural de resolver los problemas
• Herencia simple
• Metodos terminados en ((!)) y ((?))
• Metodos especiales ((=)) para caramelos sintacticos
• No existen los atributos (desde fuera)
• Se usa ((@)) y ((@@)) para los atributos de objeto/clase
• Se puede escribir en estilo no OO, pero en realidad es OO
![Page 40: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/40.jpg)
OO en Ruby
• Simple, comoda de escribir
• Es la forma natural de resolver los problemas
• Herencia simple
• Metodos terminados en ((!)) y ((?))
• Metodos especiales ((=)) para caramelos sintacticos
• No existen los atributos (desde fuera)
• Se usa ((@)) y ((@@)) para los atributos de objeto/clase
• Se puede escribir en estilo no OO, pero en realidad es OO
![Page 41: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/41.jpg)
OO en Ruby
• Simple, comoda de escribir
• Es la forma natural de resolver los problemas
• Herencia simple
• Metodos terminados en ((!)) y ((?))
• Metodos especiales ((=)) para caramelos sintacticos
• No existen los atributos (desde fuera)
• Se usa ((@)) y ((@@)) para los atributos de objeto/clase
• Se puede escribir en estilo no OO, pero en realidad es OO
![Page 42: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/42.jpg)
OO en Ruby
• Simple, comoda de escribir
• Es la forma natural de resolver los problemas
• Herencia simple
• Metodos terminados en ((!)) y ((?))
• Metodos especiales ((=)) para caramelos sintacticos
• No existen los atributos (desde fuera)
• Se usa ((@)) y ((@@)) para los atributos de objeto/clase
• Se puede escribir en estilo no OO, pero en realidad es OO
![Page 43: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/43.jpg)
OO en Ruby
• Simple, comoda de escribir
• Es la forma natural de resolver los problemas
• Herencia simple
• Metodos terminados en ((!)) y ((?))
• Metodos especiales ((=)) para caramelos sintacticos
• No existen los atributos (desde fuera)
• Se usa ((@)) y ((@@)) para los atributos de objeto/clase
• Se puede escribir en estilo no OO, pero en realidad es OO
![Page 44: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/44.jpg)
OO en Ruby
• Simple, comoda de escribir
• Es la forma natural de resolver los problemas
• Herencia simple
• Metodos terminados en ((!)) y ((?))
• Metodos especiales ((=)) para caramelos sintacticos
• No existen los atributos (desde fuera)
• Se usa ((@)) y ((@@)) para los atributos de objeto/clase
• Se puede escribir en estilo no OO, pero en realidad es OO
![Page 45: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/45.jpg)
OO en Ruby
• Simple, comoda de escribir
• Es la forma natural de resolver los problemas
• Herencia simple
• Metodos terminados en ((!)) y ((?))
• Metodos especiales ((=)) para caramelos sintacticos
• No existen los atributos (desde fuera)
• Se usa ((@)) y ((@@)) para los atributos de objeto/clase
• Se puede escribir en estilo no OO, pero en realidad es OO
![Page 46: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/46.jpg)
Estructuras
• Pocas, en parte por los bloques
• if, case, while, loop, for
• if tiene elsif aparte de else, y devuelve un valor
• if tiene then optativo (sintaxis de una lınea)
• case tiene una forma curiosa de comparar (operador === delo que va en el when)
• case devuelve un valor
• Las tres ultimas rara vez se usan
![Page 47: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/47.jpg)
Estructuras
• Pocas, en parte por los bloques
• if, case, while, loop, for
• if tiene elsif aparte de else, y devuelve un valor
• if tiene then optativo (sintaxis de una lınea)
• case tiene una forma curiosa de comparar (operador === delo que va en el when)
• case devuelve un valor
• Las tres ultimas rara vez se usan
![Page 48: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/48.jpg)
Estructuras
• Pocas, en parte por los bloques
• if, case, while, loop, for
• if tiene elsif aparte de else, y devuelve un valor
• if tiene then optativo (sintaxis de una lınea)
• case tiene una forma curiosa de comparar (operador === delo que va en el when)
• case devuelve un valor
• Las tres ultimas rara vez se usan
![Page 49: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/49.jpg)
Estructuras
• Pocas, en parte por los bloques
• if, case, while, loop, for
• if tiene elsif aparte de else, y devuelve un valor
• if tiene then optativo (sintaxis de una lınea)
• case tiene una forma curiosa de comparar (operador === delo que va en el when)
• case devuelve un valor
• Las tres ultimas rara vez se usan
![Page 50: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/50.jpg)
Estructuras
• Pocas, en parte por los bloques
• if, case, while, loop, for
• if tiene elsif aparte de else, y devuelve un valor
• if tiene then optativo (sintaxis de una lınea)
• case tiene una forma curiosa de comparar (operador === delo que va en el when)
• case devuelve un valor
• Las tres ultimas rara vez se usan
![Page 51: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/51.jpg)
Estructuras
• Pocas, en parte por los bloques
• if, case, while, loop, for
• if tiene elsif aparte de else, y devuelve un valor
• if tiene then optativo (sintaxis de una lınea)
• case tiene una forma curiosa de comparar (operador === delo que va en el when)
• case devuelve un valor
• Las tres ultimas rara vez se usan
![Page 52: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/52.jpg)
Estructuras
• Pocas, en parte por los bloques
• if, case, while, loop, for
• if tiene elsif aparte de else, y devuelve un valor
• if tiene then optativo (sintaxis de una lınea)
• case tiene una forma curiosa de comparar (operador === delo que va en el when)
• case devuelve un valor
• Las tres ultimas rara vez se usan
![Page 53: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/53.jpg)
Ejemplo
if 0 then puts "Sorpresa" else puts "0 es falso" end
if 0puts "No te enteras..."
elseputs "Solamente false y nil son falsos"
end
![Page 54: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/54.jpg)
Ejemplo
if 0 then puts "Sorpresa" else puts "0 es falso" end
if 0puts "No te enteras..."
elseputs "Solamente false y nil son falsos"
end
![Page 55: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/55.jpg)
Ejemplo
if 0 then puts "Sorpresa" else puts "0 es falso" end
if 0puts "No te enteras..."
elseputs "Solamente false y nil son falsos"
end
![Page 56: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/56.jpg)
Mas ejemplos
case ’pepito’when /pep/
puts "Guardiola"when Integer
puts "Un entero"when ’a’ .. ’z’
puts "Una sola letra"end
![Page 57: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/57.jpg)
Mas ejemplos
case ’pepito’when /pep/
puts "Guardiola"when Integer
puts "Un entero"when ’a’ .. ’z’
puts "Una sola letra"end
![Page 58: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/58.jpg)
Mas ejemplos
case ’pepito’when /pep/
puts "Guardiola"when Integer
puts "Un entero"when ’a’ .. ’z’
puts "Una sola letra"end
![Page 59: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/59.jpg)
Mas ejemplos
case ’pepito’when /pep/
puts "Guardiola"when Integer
puts "Un entero"when ’a’ .. ’z’
puts "Una sola letra"end
![Page 60: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/60.jpg)
Mas ejemplos todavıa
a = 0while a < 10 do a += 1 end
loop doa += 1puts "Bucle manual y aburrido"break if a > 20
end
for i in 35..40 do puts "Mejor, pero no" end
![Page 61: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/61.jpg)
Bucles estilo Ruby
a = 0while a < 10 do a += 1 end
loop doa += 1puts "Bucle manual y aburrido"break if a > 20
end
for i in 35..40 do puts "Mejor, pero no" end
![Page 62: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/62.jpg)
Bucles estilo Ruby
0.upto(9) do puts "Mejor" end
loop doa += 1puts "Bucle manual y aburrido"break if a > 20
end
for i in 35..40 do puts "Mejor, pero no" end
![Page 63: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/63.jpg)
Bucles estilo Ruby
0.upto(9) do puts "Mejor" end
10.times do puts "Bucle rubyano" end
for i in 35..40 do puts "Mejor, pero no" end
![Page 64: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/64.jpg)
Bucles estilo Ruby
0.upto(9) do puts "Mejor" end
10.times do puts "Bucle rubyano" end
(35..40).each do |i| puts "Te saliste #{i}" end
![Page 65: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/65.jpg)
Bloques e iteradores
• La base del lenguaje
• Varios usos tıpicos:
• Bucles (iteradores)• Guardar funciones anonimas (para mas tarde)• Ejecutar algo con un recurso (gestion automatica)• Inicializacion de atributos
• Se pueden convertir en objetos Proc para pasarse
![Page 66: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/66.jpg)
Bloques e iteradores
• La base del lenguaje
• Varios usos tıpicos:
• Bucles (iteradores)• Guardar funciones anonimas (para mas tarde)• Ejecutar algo con un recurso (gestion automatica)• Inicializacion de atributos
• Se pueden convertir en objetos Proc para pasarse
![Page 67: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/67.jpg)
Bloques e iteradores
• La base del lenguaje
• Varios usos tıpicos:• Bucles (iteradores)
• Guardar funciones anonimas (para mas tarde)• Ejecutar algo con un recurso (gestion automatica)• Inicializacion de atributos
• Se pueden convertir en objetos Proc para pasarse
![Page 68: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/68.jpg)
Bloques e iteradores
• La base del lenguaje
• Varios usos tıpicos:• Bucles (iteradores)• Guardar funciones anonimas (para mas tarde)
• Ejecutar algo con un recurso (gestion automatica)• Inicializacion de atributos
• Se pueden convertir en objetos Proc para pasarse
![Page 69: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/69.jpg)
Bloques e iteradores
• La base del lenguaje
• Varios usos tıpicos:• Bucles (iteradores)• Guardar funciones anonimas (para mas tarde)• Ejecutar algo con un recurso (gestion automatica)
• Inicializacion de atributos
• Se pueden convertir en objetos Proc para pasarse
![Page 70: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/70.jpg)
Bloques e iteradores
• La base del lenguaje
• Varios usos tıpicos:• Bucles (iteradores)• Guardar funciones anonimas (para mas tarde)• Ejecutar algo con un recurso (gestion automatica)• Inicializacion de atributos
• Se pueden convertir en objetos Proc para pasarse
![Page 71: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/71.jpg)
Bloques e iteradores
• La base del lenguaje
• Varios usos tıpicos:• Bucles (iteradores)• Guardar funciones anonimas (para mas tarde)• Ejecutar algo con un recurso (gestion automatica)• Inicializacion de atributos
• Se pueden convertir en objetos Proc para pasarse
![Page 72: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/72.jpg)
Ejemplo de bloques
[1, 2, 3].each {|i| puts i}
![Page 73: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/73.jpg)
Ejemplo de bloques
[1, 2, 3].each {|i| puts i}
button.onClick do |event, obj, data|puts "Me han pulsado"
end
![Page 74: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/74.jpg)
Ejemplo de bloques
[1, 2, 3].each {|i| puts i}
button.onClick do |event, obj, data|puts "Me han pulsado"
end
File.open("foo") do |f|# Hacemos algo con f, que se cierra solo al final
end
![Page 75: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/75.jpg)
Ejemplo de bloques
[1, 2, 3].each {|i| puts i}
button.onClick do |event, obj, data|puts "Me han pulsado"
end
File.open("foo") do |f|# Hacemos algo con f, que se cierra solo al final
end
UnaClase.new do |o|o.attr1 = ; o.attr2 = 30
end
![Page 76: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/76.jpg)
Ahora lo ves, ahora no lo ves
• Ruby es muy dinamico
• Casi todo se puede redefinir (¡incluso la base!)
• Las definiciones de clase se ((ejecutan))...
• ...ası que podemos ((ejecutar)) cosas al definir clases
• alias method, attr reader, protected, public,module function...
• Declarar una clase es definir una nueva constante(mayusculas, Remember, Sammy Jenkins?)
• Mas sobre esto en los extras del DVD
![Page 77: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/77.jpg)
Ahora lo ves, ahora no lo ves
• Ruby es muy dinamico
• Casi todo se puede redefinir (¡incluso la base!)
• Las definiciones de clase se ((ejecutan))...
• ...ası que podemos ((ejecutar)) cosas al definir clases
• alias method, attr reader, protected, public,module function...
• Declarar una clase es definir una nueva constante(mayusculas, Remember, Sammy Jenkins?)
• Mas sobre esto en los extras del DVD
![Page 78: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/78.jpg)
Ahora lo ves, ahora no lo ves
• Ruby es muy dinamico
• Casi todo se puede redefinir (¡incluso la base!)
• Las definiciones de clase se ((ejecutan))...
• ...ası que podemos ((ejecutar)) cosas al definir clases
• alias method, attr reader, protected, public,module function...
• Declarar una clase es definir una nueva constante(mayusculas, Remember, Sammy Jenkins?)
• Mas sobre esto en los extras del DVD
![Page 79: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/79.jpg)
Ahora lo ves, ahora no lo ves
• Ruby es muy dinamico
• Casi todo se puede redefinir (¡incluso la base!)
• Las definiciones de clase se ((ejecutan))...
• ...ası que podemos ((ejecutar)) cosas al definir clases
• alias method, attr reader, protected, public,module function...
• Declarar una clase es definir una nueva constante(mayusculas, Remember, Sammy Jenkins?)
• Mas sobre esto en los extras del DVD
![Page 80: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/80.jpg)
Ahora lo ves, ahora no lo ves
• Ruby es muy dinamico
• Casi todo se puede redefinir (¡incluso la base!)
• Las definiciones de clase se ((ejecutan))...
• ...ası que podemos ((ejecutar)) cosas al definir clases
• alias method, attr reader, protected, public,module function...
• Declarar una clase es definir una nueva constante(mayusculas, Remember, Sammy Jenkins?)
• Mas sobre esto en los extras del DVD
![Page 81: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/81.jpg)
Ahora lo ves, ahora no lo ves
• Ruby es muy dinamico
• Casi todo se puede redefinir (¡incluso la base!)
• Las definiciones de clase se ((ejecutan))...
• ...ası que podemos ((ejecutar)) cosas al definir clases
• alias method, attr reader, protected, public,module function...
• Declarar una clase es definir una nueva constante(mayusculas, Remember, Sammy Jenkins?)
• Mas sobre esto en los extras del DVD
![Page 82: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/82.jpg)
Ahora lo ves, ahora no lo ves
• Ruby es muy dinamico
• Casi todo se puede redefinir (¡incluso la base!)
• Las definiciones de clase se ((ejecutan))...
• ...ası que podemos ((ejecutar)) cosas al definir clases
• alias method, attr reader, protected, public,module function...
• Declarar una clase es definir una nueva constante(mayusculas, Remember, Sammy Jenkins?)
• Mas sobre esto en los extras del DVD
![Page 83: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/83.jpg)
Ejemplo
class Apitijanderattr_reader :foo # Igual a def foo; @foo; endattr_accessor :bar # Tambien crea bar=
protected # Esto es un metododef metodo_protegidoend
end
module UnModulodef f1end
module_function :f1end
![Page 84: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/84.jpg)
Ejemplo
class Apitijanderattr_reader :foo # Igual a def foo; @foo; endattr_accessor :bar # Tambien crea bar=
protected # Esto es un metododef metodo_protegidoend
end
module UnModulodef f1end
module_function :f1end
![Page 85: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/85.jpg)
Ejemplo
class Apitijanderattr_reader :foo # Igual a def foo; @foo; endattr_accessor :bar # Tambien crea bar=
protected # Esto es un metododef metodo_protegidoend
end
module UnModulodef f1end
module_function :f1end
![Page 86: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/86.jpg)
Ejemplo
class Apitijanderattr_reader :foo # Igual a def foo; @foo; endattr_accessor :bar # Tambien crea bar=
protected # Esto es un metododef metodo_protegidoend
end
module UnModulodef f1end
module_function :f1end
![Page 87: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/87.jpg)
Otro ejemplo
class Gromenauerend
g = Gromenauer.newif g.class == Gromenauer
class Stringdef ataque_al_corazon
puts "Ya te botaste"end
endend
if "".respond_to?(:ataque_al_corazon)"Cuidado con el".ataque_al_corazon
end
![Page 88: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/88.jpg)
Otro ejemplo
class Gromenauerend
g = Gromenauer.newif g.class == Gromenauer
class Stringdef ataque_al_corazon
puts "Ya te botaste"end
endend
if "".respond_to?(:ataque_al_corazon)"Cuidado con el".ataque_al_corazon
end
![Page 89: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/89.jpg)
Otro ejemplo
class Gromenauerend
g = Gromenauer.newif g.class == Gromenauer
class Stringdef ataque_al_corazon
puts "Ya te botaste"end
endend
if "".respond_to?(:ataque_al_corazon)"Cuidado con el".ataque_al_corazon
end
![Page 90: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/90.jpg)
Otro ejemplo
class Gromenauerend
g = Gromenauer.newif g.class == Gromenauer
class Stringdef ataque_al_corazon
puts "Ya te botaste"end
endend
if "".respond_to?(:ataque_al_corazon)"Cuidado con el".ataque_al_corazon
end
![Page 91: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/91.jpg)
Otro ejemplo
class Gromenauerend
g = Gromenauer.newif g.class == Gromenauer
class Stringdef ataque_al_corazon
puts "Ya te botaste"end
endend
if "".respond_to?(:ataque_al_corazon)"Cuidado con el".ataque_al_corazon
end
![Page 92: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/92.jpg)
Ejemplo mas real
# Redefine funciones para que se ejecuten una sola vez# Se usa como once :unmetodo, :otrometododef Clase.once(*ids)
for id in idsmodule_eval <<-"end_eval"
alias_method :__#{id.to_i}__, #{id.inspect}def #{id.id2name}(*args, &block)
def self.#{id.id2name}(*args, &block)@__#{id.to_i}__
end@__#{id.to_i}__ = __#{id.to_i}__(*args, &block)
endend_eval
endend
![Page 93: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/93.jpg)
Descanso
![Page 94: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/94.jpg)
Descanso
![Page 95: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/95.jpg)
Indice
1 IntroduccionAntes de nada...Sobre el lenguaje
2 El lenguajeA grandes rasgosMas caracterısticas
3 Extras del DVDMixinReflexion
![Page 96: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/96.jpg)
Modulos
• ((Declaran)) nuevos espacios de nombres
• Son explıcitos, con la sintaxis module Foo ... end
• La orden require no los incluye en un espacio nuevo
• Esto permite redefinir el contexto actual, p.ej.
• Como las clases, pero no se pueden crear ejemplares demodulos
• Sirven tambien para la tecnica Mix-in
• Las funciones en modulos se declaran como defFoo.funcion (o con module function)
![Page 97: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/97.jpg)
Modulos
• ((Declaran)) nuevos espacios de nombres
• Son explıcitos, con la sintaxis module Foo ... end
• La orden require no los incluye en un espacio nuevo
• Esto permite redefinir el contexto actual, p.ej.
• Como las clases, pero no se pueden crear ejemplares demodulos
• Sirven tambien para la tecnica Mix-in
• Las funciones en modulos se declaran como defFoo.funcion (o con module function)
![Page 98: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/98.jpg)
Modulos
• ((Declaran)) nuevos espacios de nombres
• Son explıcitos, con la sintaxis module Foo ... end
• La orden require no los incluye en un espacio nuevo
• Esto permite redefinir el contexto actual, p.ej.
• Como las clases, pero no se pueden crear ejemplares demodulos
• Sirven tambien para la tecnica Mix-in
• Las funciones en modulos se declaran como defFoo.funcion (o con module function)
![Page 99: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/99.jpg)
Modulos
• ((Declaran)) nuevos espacios de nombres
• Son explıcitos, con la sintaxis module Foo ... end
• La orden require no los incluye en un espacio nuevo
• Esto permite redefinir el contexto actual, p.ej.
• Como las clases, pero no se pueden crear ejemplares demodulos
• Sirven tambien para la tecnica Mix-in
• Las funciones en modulos se declaran como defFoo.funcion (o con module function)
![Page 100: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/100.jpg)
Modulos
• ((Declaran)) nuevos espacios de nombres
• Son explıcitos, con la sintaxis module Foo ... end
• La orden require no los incluye en un espacio nuevo
• Esto permite redefinir el contexto actual, p.ej.
• Como las clases, pero no se pueden crear ejemplares demodulos
• Sirven tambien para la tecnica Mix-in
• Las funciones en modulos se declaran como defFoo.funcion (o con module function)
![Page 101: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/101.jpg)
Modulos
• ((Declaran)) nuevos espacios de nombres
• Son explıcitos, con la sintaxis module Foo ... end
• La orden require no los incluye en un espacio nuevo
• Esto permite redefinir el contexto actual, p.ej.
• Como las clases, pero no se pueden crear ejemplares demodulos
• Sirven tambien para la tecnica Mix-in
• Las funciones en modulos se declaran como defFoo.funcion (o con module function)
![Page 102: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/102.jpg)
Modulos
• ((Declaran)) nuevos espacios de nombres
• Son explıcitos, con la sintaxis module Foo ... end
• La orden require no los incluye en un espacio nuevo
• Esto permite redefinir el contexto actual, p.ej.
• Como las clases, pero no se pueden crear ejemplares demodulos
• Sirven tambien para la tecnica Mix-in
• Las funciones en modulos se declaran como defFoo.funcion (o con module function)
![Page 103: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/103.jpg)
Ejemplo de modulos
module Fooclass Bar; end
end
f = Foo::Bar.new
class Foo::Bardef dia_aciago; puts "Asi hago algo"; end
end
f.dia_aciago # "Asi hago algo"
![Page 104: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/104.jpg)
Ejemplo de modulos
module Fooclass Bar; end
end
f = Foo::Bar.new
class Foo::Bardef dia_aciago; puts "Asi hago algo"; end
end
f.dia_aciago # "Asi hago algo"
![Page 105: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/105.jpg)
Ejemplo de modulos
module Fooclass Bar; end
end
f = Foo::Bar.new
class Foo::Bardef dia_aciago; puts "Asi hago algo"; end
end
f.dia_aciago # "Asi hago algo"
![Page 106: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/106.jpg)
Ejemplo de modulos
module Fooclass Bar; end
end
f = Foo::Bar.new
class Foo::Bardef dia_aciago; puts "Asi hago algo"; end
end
f.dia_aciago # "Asi hago algo"
![Page 107: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/107.jpg)
Ejemplo de modulos
module Fooclass Bar; end
end
f = Foo::Bar.new
class Foo::Bardef dia_aciago; puts "Asi hago algo"; end
end
f.dia_aciago # "Asi hago algo"
![Page 108: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/108.jpg)
Funciones en modulos
module Foodef met_mixin; "mixin"; enddef Foo.met_normal; "normal"; enddef met_normal2; "normal2"; endmodule_function :met_normal2
end
Foo.met_mixin # Lanza NoMethodErrorFoo.met_normal # "normal"Foo.met_normal2 # "normal2"
![Page 109: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/109.jpg)
Funciones en modulos
module Foodef met_mixin; "mixin"; enddef Foo.met_normal; "normal"; enddef met_normal2; "normal2"; endmodule_function :met_normal2
end
Foo.met_mixin # Lanza NoMethodErrorFoo.met_normal # "normal"Foo.met_normal2 # "normal2"
![Page 110: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/110.jpg)
Funciones en modulos
module Foodef met_mixin; "mixin"; enddef Foo.met_normal; "normal"; enddef met_normal2; "normal2"; endmodule_function :met_normal2
end
Foo.met_mixin # Lanza NoMethodErrorFoo.met_normal # "normal"Foo.met_normal2 # "normal2"
![Page 111: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/111.jpg)
Funciones en modulos
module Foodef met_mixin; "mixin"; enddef Foo.met_normal; "normal"; enddef met_normal2; "normal2"; endmodule_function :met_normal2
end
Foo.met_mixin # Lanza NoMethodErrorFoo.met_normal # "normal"Foo.met_normal2 # "normal2"
![Page 112: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/112.jpg)
Sımbolos, ¿ser o estar?
• Cosa ((rara)) de Ruby
• Ninguna funcionalidad adicional, mera ((forma de hablar))
• Parecidos a ristras inmutables
• Sintaxis → :simbolo
• Ayudan a identificar la intencion
• No hay equivalente en otros lenguajes populares, en los que seusarıan ristras (¿be = ((ser)) o ((estar))?)
![Page 113: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/113.jpg)
Sımbolos, ¿ser o estar?
• Cosa ((rara)) de Ruby
• Ninguna funcionalidad adicional, mera ((forma de hablar))
• Parecidos a ristras inmutables
• Sintaxis → :simbolo
• Ayudan a identificar la intencion
• No hay equivalente en otros lenguajes populares, en los que seusarıan ristras (¿be = ((ser)) o ((estar))?)
![Page 114: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/114.jpg)
Sımbolos, ¿ser o estar?
• Cosa ((rara)) de Ruby
• Ninguna funcionalidad adicional, mera ((forma de hablar))
• Parecidos a ristras inmutables
• Sintaxis → :simbolo
• Ayudan a identificar la intencion
• No hay equivalente en otros lenguajes populares, en los que seusarıan ristras (¿be = ((ser)) o ((estar))?)
![Page 115: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/115.jpg)
Sımbolos, ¿ser o estar?
• Cosa ((rara)) de Ruby
• Ninguna funcionalidad adicional, mera ((forma de hablar))
• Parecidos a ristras inmutables
• Sintaxis → :simbolo
• Ayudan a identificar la intencion
• No hay equivalente en otros lenguajes populares, en los que seusarıan ristras (¿be = ((ser)) o ((estar))?)
![Page 116: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/116.jpg)
Sımbolos, ¿ser o estar?
• Cosa ((rara)) de Ruby
• Ninguna funcionalidad adicional, mera ((forma de hablar))
• Parecidos a ristras inmutables
• Sintaxis → :simbolo
• Ayudan a identificar la intencion
• No hay equivalente en otros lenguajes populares, en los que seusarıan ristras (¿be = ((ser)) o ((estar))?)
![Page 117: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/117.jpg)
Sımbolos, ¿ser o estar?
• Cosa ((rara)) de Ruby
• Ninguna funcionalidad adicional, mera ((forma de hablar))
• Parecidos a ristras inmutables
• Sintaxis → :simbolo
• Ayudan a identificar la intencion
• No hay equivalente en otros lenguajes populares, en los que seusarıan ristras (¿be = ((ser)) o ((estar))?)
![Page 118: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/118.jpg)
Ejemplos de sımbolos
File.open(’ruta’)obj.send(:metodo) # Aunque vale obj.send(’metodo’)
var[’clave’] = ’valor’var[:opcion] = ’valor’
find(:conds => ["1 = :foo", :foo => ’bar’],:limit => 3, :order_by => "uncampo DESC")
set_table_name ’una_tabla’valides_presence_of :uncampo
![Page 119: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/119.jpg)
Ejemplos de sımbolos
File.open(’ruta’)obj.send(:metodo) # Aunque vale obj.send(’metodo’)
var[’clave’] = ’valor’var[:opcion] = ’valor’
find(:conds => ["1 = :foo", :foo => ’bar’],:limit => 3, :order_by => "uncampo DESC")
set_table_name ’una_tabla’valides_presence_of :uncampo
![Page 120: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/120.jpg)
Ejemplos de sımbolos
File.open(’ruta’)obj.send(:metodo) # Aunque vale obj.send(’metodo’)
var[’clave’] = ’valor’var[:opcion] = ’valor’
find(:conds => ["1 = :foo", :foo => ’bar’],:limit => 3, :order_by => "uncampo DESC")
set_table_name ’una_tabla’valides_presence_of :uncampo
![Page 121: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/121.jpg)
Ejemplos de sımbolos
File.open(’ruta’)obj.send(:metodo) # Aunque vale obj.send(’metodo’)
var[’clave’] = ’valor’var[:opcion] = ’valor’
find(:conds => ["1 = :foo", :foo => ’bar’],:limit => 3, :order_by => "uncampo DESC")
set_table_name ’una_tabla’valides_presence_of :uncampo
![Page 122: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/122.jpg)
Ejemplos de sımbolos
File.open(’ruta’)obj.send(:metodo) # Aunque vale obj.send(’metodo’)
var[’clave’] = ’valor’var[:opcion] = ’valor’
find(:conds => ["1 = :foo", :foo => ’bar’],:limit => 3, :order_by => "uncampo DESC")
set_table_name ’una_tabla’valides_presence_of :uncampo
![Page 123: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/123.jpg)
Ejemplos de sımbolos
File.open(’ruta’)obj.send(:metodo) # Aunque vale obj.send(’metodo’)
var[’clave’] = ’valor’var[:opcion] = ’valor’
find(:conds => ["1 = :foo", :foo => ’bar’],:limit => 3, :order_by => "uncampo DESC")
set_table_name ’una_tabla’valides_presence_of :uncampo
![Page 124: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/124.jpg)
Ejemplos de sımbolos
File.open(’ruta’)obj.send(:metodo) # Aunque vale obj.send(’metodo’)
var[’clave’] = ’valor’var[:opcion] = ’valor’
find(:conds => ["1 = :foo", :foo => ’bar’],:limit => 3, :order_by => "uncampo DESC")
set_table_name ’una_tabla’valides_presence_of :uncampo
![Page 125: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/125.jpg)
Excepciones
• Ningun detalle especial/sorprendente
• Clases, que pueden heredar (la base es Exception)
• Por convencion terminan en Error
• Se cazan solo las herederas de StandardError, si noespecificamos
• Si lanzamos una sin especificar, se lanza RuntimeError
• Se lanzan con raise
• Se capturan con bloques begin/rescue/end
• Bloque ensure, para ejecutar algo siempre
![Page 126: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/126.jpg)
Excepciones
• Ningun detalle especial/sorprendente
• Clases, que pueden heredar (la base es Exception)
• Por convencion terminan en Error
• Se cazan solo las herederas de StandardError, si noespecificamos
• Si lanzamos una sin especificar, se lanza RuntimeError
• Se lanzan con raise
• Se capturan con bloques begin/rescue/end
• Bloque ensure, para ejecutar algo siempre
![Page 127: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/127.jpg)
Excepciones
• Ningun detalle especial/sorprendente
• Clases, que pueden heredar (la base es Exception)
• Por convencion terminan en Error
• Se cazan solo las herederas de StandardError, si noespecificamos
• Si lanzamos una sin especificar, se lanza RuntimeError
• Se lanzan con raise
• Se capturan con bloques begin/rescue/end
• Bloque ensure, para ejecutar algo siempre
![Page 128: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/128.jpg)
Excepciones
• Ningun detalle especial/sorprendente
• Clases, que pueden heredar (la base es Exception)
• Por convencion terminan en Error
• Se cazan solo las herederas de StandardError, si noespecificamos
• Si lanzamos una sin especificar, se lanza RuntimeError
• Se lanzan con raise
• Se capturan con bloques begin/rescue/end
• Bloque ensure, para ejecutar algo siempre
![Page 129: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/129.jpg)
Excepciones
• Ningun detalle especial/sorprendente
• Clases, que pueden heredar (la base es Exception)
• Por convencion terminan en Error
• Se cazan solo las herederas de StandardError, si noespecificamos
• Si lanzamos una sin especificar, se lanza RuntimeError
• Se lanzan con raise
• Se capturan con bloques begin/rescue/end
• Bloque ensure, para ejecutar algo siempre
![Page 130: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/130.jpg)
Excepciones
• Ningun detalle especial/sorprendente
• Clases, que pueden heredar (la base es Exception)
• Por convencion terminan en Error
• Se cazan solo las herederas de StandardError, si noespecificamos
• Si lanzamos una sin especificar, se lanza RuntimeError
• Se lanzan con raise
• Se capturan con bloques begin/rescue/end
• Bloque ensure, para ejecutar algo siempre
![Page 131: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/131.jpg)
Excepciones
• Ningun detalle especial/sorprendente
• Clases, que pueden heredar (la base es Exception)
• Por convencion terminan en Error
• Se cazan solo las herederas de StandardError, si noespecificamos
• Si lanzamos una sin especificar, se lanza RuntimeError
• Se lanzan con raise
• Se capturan con bloques begin/rescue/end
• Bloque ensure, para ejecutar algo siempre
![Page 132: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/132.jpg)
Excepciones
• Ningun detalle especial/sorprendente
• Clases, que pueden heredar (la base es Exception)
• Por convencion terminan en Error
• Se cazan solo las herederas de StandardError, si noespecificamos
• Si lanzamos una sin especificar, se lanza RuntimeError
• Se lanzan con raise
• Se capturan con bloques begin/rescue/end
• Bloque ensure, para ejecutar algo siempre
![Page 133: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/133.jpg)
Ejemplos de excepciones
beginraise # Como RuntimeError, ""raise "Mensaje" # Como RuntimeErrorraise AlgunaExcepcionError, "Mensaje"raise ArgumentError, "Name too big", caller[1..-1]
rescue SyntaxError, NameError => boomputs "Error de sintaxis: #{boom}"
rescue AlgunaExcepcionErrorputs "Estilo Perl: #{$!}"
rescue => e # Como StandardErrorprint "Error: #{e}"
elseputs "Esto no se imprime"
ensureputs "Se ejecuta siempre"
end
![Page 134: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/134.jpg)
Ejemplos de excepciones
beginraise # Como RuntimeError, ""raise "Mensaje" # Como RuntimeErrorraise AlgunaExcepcionError, "Mensaje"raise ArgumentError, "Name too big", caller[1..-1]
rescue SyntaxError, NameError => boomputs "Error de sintaxis: #{boom}"
rescue AlgunaExcepcionErrorputs "Estilo Perl: #{$!}"
rescue => e # Como StandardErrorprint "Error: #{e}"
elseputs "Esto no se imprime"
ensureputs "Se ejecuta siempre"
end
![Page 135: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/135.jpg)
Ejemplos de excepciones
beginraise # Como RuntimeError, ""raise "Mensaje" # Como RuntimeErrorraise AlgunaExcepcionError, "Mensaje"raise ArgumentError, "Name too big", caller[1..-1]
rescue SyntaxError, NameError => boomputs "Error de sintaxis: #{boom}"
rescue AlgunaExcepcionErrorputs "Estilo Perl: #{$!}"
rescue => e # Como StandardErrorprint "Error: #{e}"
elseputs "Esto no se imprime"
ensureputs "Se ejecuta siempre"
end
![Page 136: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/136.jpg)
Ejemplos de excepciones
beginraise # Como RuntimeError, ""raise "Mensaje" # Como RuntimeErrorraise AlgunaExcepcionError, "Mensaje"raise ArgumentError, "Name too big", caller[1..-1]
rescue SyntaxError, NameError => boomputs "Error de sintaxis: #{boom}"
rescue AlgunaExcepcionErrorputs "Estilo Perl: #{$!}"
rescue => e # Como StandardErrorprint "Error: #{e}"
elseputs "Esto no se imprime"
ensureputs "Se ejecuta siempre"
end
![Page 137: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/137.jpg)
Ejemplos de excepciones
beginraise # Como RuntimeError, ""raise "Mensaje" # Como RuntimeErrorraise AlgunaExcepcionError, "Mensaje"raise ArgumentError, "Name too big", caller[1..-1]
rescue SyntaxError, NameError => boomputs "Error de sintaxis: #{boom}"
rescue AlgunaExcepcionErrorputs "Estilo Perl: #{$!}"
rescue => e # Como StandardErrorprint "Error: #{e}"
elseputs "Esto no se imprime"
ensureputs "Se ejecuta siempre"
end
![Page 138: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/138.jpg)
Ejemplos de excepciones
beginraise # Como RuntimeError, ""raise "Mensaje" # Como RuntimeErrorraise AlgunaExcepcionError, "Mensaje"raise ArgumentError, "Name too big", caller[1..-1]
rescue SyntaxError, NameError => boomputs "Error de sintaxis: #{boom}"
rescue AlgunaExcepcionErrorputs "Estilo Perl: #{$!}"
rescue => e # Como StandardErrorprint "Error: #{e}"
elseputs "Esto no se imprime"
ensureputs "Se ejecuta siempre"
end
![Page 139: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/139.jpg)
Ejemplos de excepciones
beginraise # Como RuntimeError, ""raise "Mensaje" # Como RuntimeErrorraise AlgunaExcepcionError, "Mensaje"raise ArgumentError, "Name too big", caller[1..-1]
rescue SyntaxError, NameError => boomputs "Error de sintaxis: #{boom}"
rescue AlgunaExcepcionErrorputs "Estilo Perl: #{$!}"
rescue => e # Como StandardErrorprint "Error: #{e}"
elseputs "Esto no se imprime"
ensureputs "Se ejecuta siempre"
end
![Page 140: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/140.jpg)
Ejemplos de excepciones
beginraise # Como RuntimeError, ""raise "Mensaje" # Como RuntimeErrorraise AlgunaExcepcionError, "Mensaje"raise ArgumentError, "Name too big", caller[1..-1]
rescue SyntaxError, NameError => boomputs "Error de sintaxis: #{boom}"
rescue AlgunaExcepcionErrorputs "Estilo Perl: #{$!}"
rescue => e # Como StandardErrorprint "Error: #{e}"
elseputs "Esto no se imprime"
ensureputs "Se ejecuta siempre"
end
![Page 141: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/141.jpg)
Ejemplos de excepciones
beginraise # Como RuntimeError, ""raise "Mensaje" # Como RuntimeErrorraise AlgunaExcepcionError, "Mensaje"raise ArgumentError, "Name too big", caller[1..-1]
rescue SyntaxError, NameError => boomputs "Error de sintaxis: #{boom}"
rescue AlgunaExcepcionErrorputs "Estilo Perl: #{$!}"
rescue => e # Como StandardErrorprint "Error: #{e}"
elseputs "Esto no se imprime"
ensureputs "Se ejecuta siempre"
end
![Page 142: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/142.jpg)
Ejemplos de excepciones
beginraise # Como RuntimeError, ""raise "Mensaje" # Como RuntimeErrorraise AlgunaExcepcionError, "Mensaje"raise ArgumentError, "Name too big", caller[1..-1]
rescue SyntaxError, NameError => boomputs "Error de sintaxis: #{boom}"
rescue AlgunaExcepcionErrorputs "Estilo Perl: #{$!}"
rescue => e # Como StandardErrorprint "Error: #{e}"
elseputs "Esto no se imprime"
ensureputs "Se ejecuta siempre"
end
![Page 143: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/143.jpg)
Expresiones regulares
• ((Empotradas)) en la sintaxis
• Busqueda con expresion =~/expreg/
• Sustitucion con expresion.gsub(/ex(pr)eg/, ’\1’)• Tambien con expresion.gsub(/ex(pr)eg/) {|p| $1}• En el fondo, caramelos sintacticos (completamente OO)
• Clases Regexp, MatchData
![Page 144: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/144.jpg)
Expresiones regulares
• ((Empotradas)) en la sintaxis
• Busqueda con expresion =~/expreg/
• Sustitucion con expresion.gsub(/ex(pr)eg/, ’\1’)• Tambien con expresion.gsub(/ex(pr)eg/) {|p| $1}• En el fondo, caramelos sintacticos (completamente OO)
• Clases Regexp, MatchData
![Page 145: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/145.jpg)
Expresiones regulares
• ((Empotradas)) en la sintaxis
• Busqueda con expresion =~/expreg/
• Sustitucion con expresion.gsub(/ex(pr)eg/, ’\1’)
• Tambien con expresion.gsub(/ex(pr)eg/) {|p| $1}• En el fondo, caramelos sintacticos (completamente OO)
• Clases Regexp, MatchData
![Page 146: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/146.jpg)
Expresiones regulares
• ((Empotradas)) en la sintaxis
• Busqueda con expresion =~/expreg/
• Sustitucion con expresion.gsub(/ex(pr)eg/, ’\1’)• Tambien con expresion.gsub(/ex(pr)eg/) {|p| $1}
• En el fondo, caramelos sintacticos (completamente OO)
• Clases Regexp, MatchData
![Page 147: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/147.jpg)
Expresiones regulares
• ((Empotradas)) en la sintaxis
• Busqueda con expresion =~/expreg/
• Sustitucion con expresion.gsub(/ex(pr)eg/, ’\1’)• Tambien con expresion.gsub(/ex(pr)eg/) {|p| $1}• En el fondo, caramelos sintacticos (completamente OO)
• Clases Regexp, MatchData
![Page 148: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/148.jpg)
Expresiones regulares
• ((Empotradas)) en la sintaxis
• Busqueda con expresion =~/expreg/
• Sustitucion con expresion.gsub(/ex(pr)eg/, ’\1’)• Tambien con expresion.gsub(/ex(pr)eg/) {|p| $1}• En el fondo, caramelos sintacticos (completamente OO)
• Clases Regexp, MatchData
![Page 149: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/149.jpg)
Ejemplos de expresiones regulares
if "jander" =~ /m/puts "Tiene una m"
elseputs "No tiene m"
end
"jander".gsub(/nde/, ’la’)
vars = { ’var1’ => ’val1’, ’var2’ => ’val2’ }plantilla = "var1 = %(var1), otravar = %(otravar)"plantilla.gsub(/ %([a− z0− 9 ]+)/) do |s|vars.has_key?($1) ? vars[$1] : s
end
![Page 150: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/150.jpg)
Ejemplos de expresiones regulares
if "jander" =~ /m/puts "Tiene una m"
elseputs "No tiene m"
end
"jander".gsub(/nde/, ’la’)
vars = { ’var1’ => ’val1’, ’var2’ => ’val2’ }plantilla = "var1 = %(var1), otravar = %(otravar)"plantilla.gsub(/ %([a− z0− 9 ]+)/) do |s|vars.has_key?($1) ? vars[$1] : s
end
![Page 151: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/151.jpg)
Ejemplos de expresiones regulares
if "jander" =~ /m/puts "Tiene una m"
elseputs "No tiene m"
end
"jander".gsub(/nde/, ’la’)
vars = { ’var1’ => ’val1’, ’var2’ => ’val2’ }plantilla = "var1 = %(var1), otravar = %(otravar)"plantilla.gsub(/ %([a− z0− 9 ]+)/) do |s|vars.has_key?($1) ? vars[$1] : s
end
![Page 152: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/152.jpg)
Ejemplos de expresiones regulares
if "jander" =~ /m/puts "Tiene una m"
elseputs "No tiene m"
end
"jander".gsub(/nde/, ’la’)
vars = { ’var1’ => ’val1’, ’var2’ => ’val2’ }plantilla = "var1 = %(var1), otravar = %(otravar)"plantilla.gsub(/ %([a− z0− 9 ]+)/) do |s|vars.has_key?($1) ? vars[$1] : s
end
![Page 153: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/153.jpg)
Rangos
• Tres usos basicos: series, condiciones e intervalos
• Series: como listas, pero mas eficientes
• Condiciones: guardan internamente su estado, para usarlascomo condicion
• Intervalos: comprobar si un valor entra dentro de un intervalo
![Page 154: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/154.jpg)
Rangos
• Tres usos basicos: series, condiciones e intervalos
• Series: como listas, pero mas eficientes
• Condiciones: guardan internamente su estado, para usarlascomo condicion
• Intervalos: comprobar si un valor entra dentro de un intervalo
![Page 155: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/155.jpg)
Rangos
• Tres usos basicos: series, condiciones e intervalos
• Series: como listas, pero mas eficientes
• Condiciones: guardan internamente su estado, para usarlascomo condicion
• Intervalos: comprobar si un valor entra dentro de un intervalo
![Page 156: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/156.jpg)
Rangos
• Tres usos basicos: series, condiciones e intervalos
• Series: como listas, pero mas eficientes
• Condiciones: guardan internamente su estado, para usarlascomo condicion
• Intervalos: comprobar si un valor entra dentro de un intervalo
![Page 157: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/157.jpg)
Ejemplos de rangos
(’a’..’z’).each do |letra|if (letra == ’h’) .. (letra == ’v’)
puts "Ni al principio ni al final"end
end
File.readlines(’numeros’).each do |n|puts n if n =~ /tres/ .. n =~ /seis/
end
if (1 .. 5) === 3 then puts "Entre los primeros"
![Page 158: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/158.jpg)
Ejemplos de rangos
(’a’..’z’).each do |letra|if (letra == ’h’) .. (letra == ’v’)
puts "Ni al principio ni al final"end
end
File.readlines(’numeros’).each do |n|puts n if n =~ /tres/ .. n =~ /seis/
end
if (1 .. 5) === 3 then puts "Entre los primeros"
![Page 159: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/159.jpg)
Ejemplos de rangos
(’a’..’z’).each do |letra|if (letra == ’h’) .. (letra == ’v’)
puts "Ni al principio ni al final"end
end
File.readlines(’numeros’).each do |n|puts n if n =~ /tres/ .. n =~ /seis/
end
if (1 .. 5) === 3 then puts "Entre los primeros"
![Page 160: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/160.jpg)
Ejemplos de rangos
(’a’..’z’).each do |letra|if (letra == ’h’) .. (letra == ’v’)
puts "Ni al principio ni al final"end
end
File.readlines(’numeros’).each do |n|puts n if n =~ /tres/ .. n =~ /seis/
end
if (1 .. 5) === 3 then puts "Entre los primeros"
![Page 161: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/161.jpg)
Mas ejemplos de rangos
case foowhen 1..3 # Igual que (1..3) === fooputs "Mini"
when 4..6puts "Mediano"
when 7..9puts "Grande"
end
![Page 162: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/162.jpg)
Indice
1 IntroduccionAntes de nada...Sobre el lenguaje
2 El lenguajeA grandes rasgosMas caracterısticas
3 Extras del DVDMixinReflexion
![Page 163: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/163.jpg)
Que
• La herencia en Ruby no es multiple
• Tampoco hay plantillas al estilo C++ (tipos dinamicos)
• Es conveniente compartir funcionalidad generica
• O bien obligar a que ciertas clases compartan ciertos metodos
• La solucion en Ruby es el Mixin
![Page 164: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/164.jpg)
Que
• La herencia en Ruby no es multiple
• Tampoco hay plantillas al estilo C++ (tipos dinamicos)
• Es conveniente compartir funcionalidad generica
• O bien obligar a que ciertas clases compartan ciertos metodos
• La solucion en Ruby es el Mixin
![Page 165: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/165.jpg)
Que
• La herencia en Ruby no es multiple
• Tampoco hay plantillas al estilo C++ (tipos dinamicos)
• Es conveniente compartir funcionalidad generica
• O bien obligar a que ciertas clases compartan ciertos metodos
• La solucion en Ruby es el Mixin
![Page 166: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/166.jpg)
Que
• La herencia en Ruby no es multiple
• Tampoco hay plantillas al estilo C++ (tipos dinamicos)
• Es conveniente compartir funcionalidad generica
• O bien obligar a que ciertas clases compartan ciertos metodos
• La solucion en Ruby es el Mixin
![Page 167: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/167.jpg)
Que
• La herencia en Ruby no es multiple
• Tampoco hay plantillas al estilo C++ (tipos dinamicos)
• Es conveniente compartir funcionalidad generica
• O bien obligar a que ciertas clases compartan ciertos metodos
• La solucion en Ruby es el Mixin
![Page 168: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/168.jpg)
Como
• Se anaden metodos a un modulo, y luego se incluyen en lasclases
• Los metodos se anaden como si fueran del ejemplar, no de laclase (no se pueden llamar directamente)
• En la clase, se hace un include Modulo...
• ...y automagicamente se anaden los nuevos metodos
• Se puede hacer para un objeto concreto, con el metodoextend
![Page 169: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/169.jpg)
Como
• Se anaden metodos a un modulo, y luego se incluyen en lasclases
• Los metodos se anaden como si fueran del ejemplar, no de laclase (no se pueden llamar directamente)
• En la clase, se hace un include Modulo...
• ...y automagicamente se anaden los nuevos metodos
• Se puede hacer para un objeto concreto, con el metodoextend
![Page 170: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/170.jpg)
Como
• Se anaden metodos a un modulo, y luego se incluyen en lasclases
• Los metodos se anaden como si fueran del ejemplar, no de laclase (no se pueden llamar directamente)
• En la clase, se hace un include Modulo...
• ...y automagicamente se anaden los nuevos metodos
• Se puede hacer para un objeto concreto, con el metodoextend
![Page 171: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/171.jpg)
Como
• Se anaden metodos a un modulo, y luego se incluyen en lasclases
• Los metodos se anaden como si fueran del ejemplar, no de laclase (no se pueden llamar directamente)
• En la clase, se hace un include Modulo...
• ...y automagicamente se anaden los nuevos metodos
• Se puede hacer para un objeto concreto, con el metodoextend
![Page 172: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/172.jpg)
Como
• Se anaden metodos a un modulo, y luego se incluyen en lasclases
• Los metodos se anaden como si fueran del ejemplar, no de laclase (no se pueden llamar directamente)
• En la clase, se hace un include Modulo...
• ...y automagicamente se anaden los nuevos metodos
• Se puede hacer para un objeto concreto, con el metodoextend
![Page 173: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/173.jpg)
Ejemplo de Mixin
module Enumerabledef collect
# Algo con eachenddef grep
# Algo con eachend
end
class Arrayinclude Enumerabledef each; ...; end
end
# Ya tenemos collect, grep, etc. en Array
![Page 174: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/174.jpg)
Indice
1 IntroduccionAntes de nada...Sobre el lenguaje
2 El lenguajeA grandes rasgosMas caracterısticas
3 Extras del DVDMixinReflexion
![Page 175: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/175.jpg)
Reflexion
• El dinamismo viene apoyado por la reflexion
• Las definiciones de clases, las crean o anaden metodos
• Las clases no son mas que constantes, que podemos asignar,comparar...
• Podemos anadir metodos a cada objeto
• Podemos llamar a metodos y obtener constantesdinamicamente
• Podemos preguntar a que metodos responde un objeto
• Podemos saber que objetos (y clases, por tanto) existen enese momento
![Page 176: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/176.jpg)
Reflexion
• El dinamismo viene apoyado por la reflexion
• Las definiciones de clases, las crean o anaden metodos
• Las clases no son mas que constantes, que podemos asignar,comparar...
• Podemos anadir metodos a cada objeto
• Podemos llamar a metodos y obtener constantesdinamicamente
• Podemos preguntar a que metodos responde un objeto
• Podemos saber que objetos (y clases, por tanto) existen enese momento
![Page 177: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/177.jpg)
Reflexion
• El dinamismo viene apoyado por la reflexion
• Las definiciones de clases, las crean o anaden metodos
• Las clases no son mas que constantes, que podemos asignar,comparar...
• Podemos anadir metodos a cada objeto
• Podemos llamar a metodos y obtener constantesdinamicamente
• Podemos preguntar a que metodos responde un objeto
• Podemos saber que objetos (y clases, por tanto) existen enese momento
![Page 178: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/178.jpg)
Reflexion
• El dinamismo viene apoyado por la reflexion
• Las definiciones de clases, las crean o anaden metodos
• Las clases no son mas que constantes, que podemos asignar,comparar...
• Podemos anadir metodos a cada objeto
• Podemos llamar a metodos y obtener constantesdinamicamente
• Podemos preguntar a que metodos responde un objeto
• Podemos saber que objetos (y clases, por tanto) existen enese momento
![Page 179: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/179.jpg)
Reflexion
• El dinamismo viene apoyado por la reflexion
• Las definiciones de clases, las crean o anaden metodos
• Las clases no son mas que constantes, que podemos asignar,comparar...
• Podemos anadir metodos a cada objeto
• Podemos llamar a metodos y obtener constantesdinamicamente
• Podemos preguntar a que metodos responde un objeto
• Podemos saber que objetos (y clases, por tanto) existen enese momento
![Page 180: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/180.jpg)
Reflexion
• El dinamismo viene apoyado por la reflexion
• Las definiciones de clases, las crean o anaden metodos
• Las clases no son mas que constantes, que podemos asignar,comparar...
• Podemos anadir metodos a cada objeto
• Podemos llamar a metodos y obtener constantesdinamicamente
• Podemos preguntar a que metodos responde un objeto
• Podemos saber que objetos (y clases, por tanto) existen enese momento
![Page 181: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/181.jpg)
Reflexion
• El dinamismo viene apoyado por la reflexion
• Las definiciones de clases, las crean o anaden metodos
• Las clases no son mas que constantes, que podemos asignar,comparar...
• Podemos anadir metodos a cada objeto
• Podemos llamar a metodos y obtener constantesdinamicamente
• Podemos preguntar a que metodos responde un objeto
• Podemos saber que objetos (y clases, por tanto) existen enese momento
![Page 182: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/182.jpg)
Ejemplos de reflexion
class Stringdef metodo_nuevo; puts "Soy nuevo"; endalias_method :old_strip, :stripdef strip; puts "Tariro, tariro..."; old_strip; end
end"".metodo_nuevo" con espacios, sin ropa ".strip
def ClaseNueva; endmiClase = quieresString ? String : ClaseNuevaobj = miClase.new
![Page 183: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/183.jpg)
Ejemplos de reflexion
class Stringdef metodo_nuevo; puts "Soy nuevo"; endalias_method :old_strip, :stripdef strip; puts "Tariro, tariro..."; old_strip; end
end"".metodo_nuevo" con espacios, sin ropa ".strip
def ClaseNueva; endmiClase = quieresString ? String : ClaseNuevaobj = miClase.new
![Page 184: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/184.jpg)
Ejemplos de reflexion
class Stringdef metodo_nuevo; puts "Soy nuevo"; endalias_method :old_strip, :stripdef strip; puts "Tariro, tariro..."; old_strip; end
end"".metodo_nuevo" con espacios, sin ropa ".strip
def ClaseNueva; endmiClase = quieresString ? String : ClaseNuevaobj = miClase.new
![Page 185: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/185.jpg)
Ejemplos de reflexion
class Stringdef metodo_nuevo; puts "Soy nuevo"; endalias_method :old_strip, :stripdef strip; puts "Tariro, tariro..."; old_strip; end
end"".metodo_nuevo" con espacios, sin ropa ".strip
def ClaseNueva; endmiClase = quieresString ? String : ClaseNuevaobj = miClase.new
![Page 186: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/186.jpg)
Ejemplos de reflexion
class Stringdef metodo_nuevo; puts "Soy nuevo"; endalias_method :old_strip, :stripdef strip; puts "Tariro, tariro..."; old_strip; end
end"".metodo_nuevo" con espacios, sin ropa ".strip
def ClaseNueva; endmiClase = quieresString ? String : ClaseNuevaobj = miClase.new
![Page 187: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/187.jpg)
Ejemplos de reflexion
class Stringdef metodo_nuevo; puts "Soy nuevo"; endalias_method :old_strip, :stripdef strip; puts "Tariro, tariro..."; old_strip; end
end"".metodo_nuevo" con espacios, sin ropa ".strip
def ClaseNueva; endmiClase = quieresString ? String : ClaseNuevaobj = miClase.new
![Page 188: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/188.jpg)
Mas ejemplos de reflexion
class <<objdef metodo_unico; puts "Solamente en obj"; end
endobj.metodo_unico"".metodo_unico # NoMethodError
disponibles = App::Drivers.constantscontrolador = App::Drivers.const_get(’Pg’).new
![Page 189: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/189.jpg)
Mas ejemplos de reflexion
class <<objdef metodo_unico; puts "Solamente en obj"; end
endobj.metodo_unico"".metodo_unico # NoMethodError
disponibles = App::Drivers.constantscontrolador = App::Drivers.const_get(’Pg’).new
![Page 190: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/190.jpg)
Mas ejemplos de reflexion
class <<objdef metodo_unico; puts "Solamente en obj"; end
endobj.metodo_unico"".metodo_unico # NoMethodError
disponibles = App::Drivers.constantscontrolador = App::Drivers.const_get(’Pg’).new
![Page 191: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/191.jpg)
Mas ejemplos de reflexion
class <<objdef metodo_unico; puts "Solamente en obj"; end
endobj.metodo_unico"".metodo_unico # NoMethodError
disponibles = App::Drivers.constantscontrolador = App::Drivers.const_get(’Pg’).new
![Page 192: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/192.jpg)
Mas ejemplos de reflexion
class <<objdef metodo_unico; puts "Solamente en obj"; end
endobj.metodo_unico"".metodo_unico # NoMethodError
disponibles = App::Drivers.constantscontrolador = App::Drivers.const_get(’Pg’).new
![Page 193: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/193.jpg)
Mas ejemplos de reflexion
class <<objdef metodo_unico; puts "Solamente en obj"; end
endobj.metodo_unico"".metodo_unico # NoMethodError
disponibles = App::Drivers.constantscontrolador = App::Drivers.const_get(’Pg’).new
![Page 194: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/194.jpg)
Mas ejemplos de reflexion
str = ""str.methods.grep(/trip/)metodo = :stripstr.send(metodo) if str.respond_to? metodo
ObjectSpace.each_object(Class) do |o|next unless o.name =~ /^TC_/puts "La clase #{o} empieza por TC_"
end
![Page 195: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/195.jpg)
Mas ejemplos de reflexion
str = ""str.methods.grep(/trip/)metodo = :stripstr.send(metodo) if str.respond_to? metodo
ObjectSpace.each_object(Class) do |o|next unless o.name =~ /^TC_/puts "La clase #{o} empieza por TC_"
end
![Page 196: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/196.jpg)
Mas ejemplos de reflexion
str = ""str.methods.grep(/trip/)metodo = :stripstr.send(metodo) if str.respond_to? metodo
ObjectSpace.each_object(Class) do |o|next unless o.name =~ /^TC_/puts "La clase #{o} empieza por TC_"
end
![Page 197: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/197.jpg)
Mas ejemplos de reflexion
str = ""str.methods.grep(/trip/)metodo = :stripstr.send(metodo) if str.respond_to? metodo
ObjectSpace.each_object(Class) do |o|next unless o.name =~ /^TC_/puts "La clase #{o} empieza por TC_"
end
![Page 198: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/198.jpg)
Mas ejemplos de reflexion
str = ""str.methods.grep(/trip/)metodo = :stripstr.send(metodo) if str.respond_to? metodo
ObjectSpace.each_object(Class) do |o|next unless o.name =~ /^TC_/puts "La clase #{o} empieza por TC_"
end
![Page 199: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/199.jpg)
Mas ejemplos de reflexion
str = ""str.methods.grep(/trip/)metodo = :stripstr.send(metodo) if str.respond_to? metodo
ObjectSpace.each_object(Class) do |o|next unless o.name =~ /^TC_/puts "La clase #{o} empieza por TC_"
end
![Page 200: Esteban Manchado Vel´azquez zoso@gulicdemiurgo.org/charlas/ruby.pdf · Nacimiento de Ruby • Lo invent´o un japon´es loco llamado Yukihiro Matsumoto • Todo el mundo lo conoce](https://reader033.fdocuments.es/reader033/viewer/2022042018/5e764a4e012c28019769b4a3/html5/thumbnails/200.jpg)
¡Se acabo!
¿Que mas quieres?