Come§ando com Ruby - III SEICOM

  • View
    92

  • Download
    2

Embed Size (px)

Text of Come§ando com Ruby - III SEICOM

  • 1. CELTABCentro Latino-Americanode Tecnologias Abertas

2. RubyCOMEANDO COM RUBY: DOS CONCEITOS AO PRIMEIRO CDIGO 3. SEICOM + ruby 4. Por que ruby ?! 5. O que o ruby? Onde e como nasceu? Para que serve? 6. Ruby Outras LPs 7. Vamos instalar o ruby?OBS: SO GNU/Linux! 8. Apt-getapt-get install ruby-1.9.3apt-get install ruby-2.1??? 9. Compilandoruby-lang.org/en/downloads/$ tar xfv ruby-2.1.3.tar.gz 10. Ruby Version ManagerRVM uma ferramenta de linha de comandoque permite instalar, gerenciar e trabalhar commltiplas verses de ruby e diversos conjuntosde gems. 11. rvm.io$ curl -sSL https://get.rvm.io | bash -s stable 12. Ruby est projetado para fazer osprogramadores felizes.Yukihiro Matz Matsumoto - Criador do Ruby 13. Ruby Interpretada (YARV) Totalmente Orientada a Objetos Dinmica Fortemente Tipada Gramtica complexa, mas expressiva Uma $ RICA $ Core API Inspirada em Smalltalk, Lisp e Perl 14. Scripts Programao OO Programao Funcional Metaprogramao 15. Em ruby, tudo objeto, sem excees! 16. Variveis no so objetos elas fazem referncias a eles 17. Typesvalue = 123 # => Fixnumvalue = 1234 # => Stringnumber = 1234string = Im a string# Podemos somar ?puts number + string# => TypeError: String can't be coerced into Fixnum 18. Duck TypingSe anda como um pato e faz barulho como um pato,ento de deve ser um pato. E o interpretador ficar felizem fazer com que o objeto seja tratado como um pato. Naprtica, isso significa que em vez de fazer verificaes detipo de um objeto, voc deve se preocupar se este objeto capaz de executar o mtodo que voc precisa.- Nando Vieira 19. Duck Typingclass Marmotdef initialize(message)@message = messageenddef quackputs Quack: #{@message}endendclass Duckdef initialize@name = John Doeenddef quackputs Quack, my name is #{@name}endendduck_1 = Marmot.new Marmotsduck_2 = Duck.newduck_1.quack # => Quack: Marmotsduck_2.quack # => Quack, my name is John Doe 20. Stringsmessage = Galera!o_message = Heyo_message + , e + ai + message#=> Hey, e ai Galera! 21. Stringsmessage = Galera!o_message = Hey#{o_message}, e ai #{message}#=> Hey, e ai Galera!Agora somando #{3 + 5}#=> Agora somando 8 22. Nmeros 23. Nmeros 24. Arraysitems = [ 1, String, 1.0, [ 2, 3], nil ]# => [ 1, String, 1.0, [ 2, 3], nil ]items[0] items.first# => 1items = Array.new# => [ ]items = Array.new([ 1, 2, 3 ])# => [ 1, 2, 3 ]words = %w[aa bb cc dd ee ff]# => [ aa, bb, cc, dd, ee, ff ]words[1]# => bb 25. Hashhash = { name: John,last_name: Doe,zombie: false,age: 1e10 }# => { name: John, last_name: Doe, zombie: false, age: 1e10 }hash[:name]# => Johnhash[:new_value] = { b: something, another_value => wow }hash.inspect# => { name: John, last_name: Doe, zombie: false, age: 1e10, { b:something, another_value => wow } } 26. Symbols 27. Expressesregulares 28. Mdulos 29. Classesmodule Zombieclass Zombiedef initialize@name = "John Doe"@brains_eaten = 0enddef tweet"I want brains!"enddef eat(n = 1)@brains_eaten += nenddef rooting"Yeap"enddef status{ :status => "I just ate some delicious brains",:zombie => @name }endendend 30. Heranaclass Walker < Zombiedef walk# do somethingObs: No existe herana mltipla em rubyendend 31. Mixins module SuperHerodef super_powers# Do somethingendendmodule Flydef fly#Do somethingendendclass Gokuinclude SuperHeroinclude Flydef saiyan@@force *= :infiniteendendclass Hulkinclude SuperHerodef say"Hulk smash!"endend 32. Self e SingletonClassMtodos de classe no existem no Ruby!Pelo menos no no sentido de mtodos estticos.O que acontece que estes mtodos pertencem aum objeto, que por acaso uma classe.- Nando Vieira 33. E o que mais? Condicionais (if, else, elseif, unless) Seletor Mltiplo (Case) Estruturas de repetio(for...in, while..until, loop) Iteradores (Enumerator, Iterator) Closures Procs e Lambdas Variveis (Classe, instncia) Constantes CallBacks Monkey Patching e Refinements 34. Como continuar? 35. Try ruby!tryruby.org 36. Como continuar?codeschool.com/paths/ruby 37. github.com/markets/awesome-rubylista de 100+ ferramentas ruby para tudo! 38. github.com/bbatsov/ruby-style-guideDe quem manja para a comunidade! 39. Consideraes finais 40. kenner.hp@gmail.comgithub.com/gnomex@KennerKliemannslideshare/kennerkliemannlinkedin.com/in/kennerkliemann