SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
Renato Besen

  www.oncast.com.br
O que é Ruby?




    "Uma linguagem dinâmica, open source com foco na
simplicidade e na produtividade. Tem uma sintaxe elegante de
                leitura natural e fácil escrita."
Como surgiu?
Sintaxe
class ClasseExemplo
   def initialize
     @variavel = "!!!"
   end

  def metodo(p)
     if p.respond_to? :reverse
        puts p.reverse
     end
    puts @variavel
  end
end
Módulos / Mixins
Módulos / Mixins
module M
  def metodo
    puts "Chamada do módulo"
    puts self.upcase
  end
end
Módulos / Mixins
class C < String
   include M
end

a = C.new("yay!")

a.metodo
=>Chamada do módulo
=>YAY!
Tudo é Objeto
Tudo é Objeto
2.even?


class A
   def oi
     puts "Oi!"
   end
end

A.method_defined? :oi
Classes Abertas
Classes Abertas


"With great power must come
     great responsibility"
       - Benjamin "Ben" Parker
Classes Abertas
class String
   def reverse_upcase
      self.reverse.upcase
   end
end

"notlob".reverse_upcase
=> "BOLTON"
method_missing
method_missing
def method_missing(method_id, *arguments)
  if match = matches_dynamic_finder?(method_id)
     finder = determine_finder(match)
     attribute_names = extract_attribute_names_from_match(match)
     # ....
end

def matches_dynamic_finder?(method_id)
  /^find_(all_by|by)_([_a-zA-Z]w*)$/.match(method_id.to_s)
end

http://dev.rubyonrails.org/browser/trunk/activerecord/lib/active_record/base.rb?
rev=9235
Blocos
Blocos
['bla', 'ble', 'bli'].each { |word| word.upcase!}.join(";")
=> "BLA;BLE;BLI"
Blocos
def compara(p,q)
  if block_given?
      yield(p,q)
  else
      p <=> q
  end
end

compara(1, 2)
=> -1
compara(1, 2) {|a,b| a * 5 <=> b}
=> 1
Listas e Hashes
Listas e Hashes

a = [1,2,3]
a << 4
=> [1, 2, 3, 4]

b = {:um => 1, :dois => 2, :tres => 3}
b["quatro"] = 4
Listas e Hashes
a = [1, 2, 3, 4, 5]

a.each {|n| puts n} # itera na lista

b = a.select {|n| n.even?} # seleciona elementos na lista
=> [2, 4]

def fatorial(n)
   (2..n).inject(1) { |result, i| result *= i}
end
Listas e Hashes
a = {1 => "Renato" , 2 => "Andre"}

a.each do |key, name|
  puts key
  if name.end_with "o"
      puts name.upcase
  else
      puts name.downcase
  end
end
Ferramentas
Ferramentas
irb
rubygems
zentest
rspec
rake
rdoc/ri
Como aprender?




Why's (poignant) guide to Ruby

Mais conteúdo relacionado

Semelhante a Ruby

Introdução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação RubyIntrodução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação RubyDiego Rubin
 
Ruby on rails gds 2011
Ruby on rails   gds 2011Ruby on rails   gds 2011
Ruby on rails gds 2011JogosUnisinos
 
Apresentação ruby + rails
Apresentação ruby + railsApresentação ruby + rails
Apresentação ruby + railsMarcelo Bohn
 
Ruby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosRuby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosGregorio Kusowski
 
O que mudou no Ruby 1.9
O que mudou no Ruby 1.9O que mudou no Ruby 1.9
O que mudou no Ruby 1.9Nando Vieira
 
Perl Moderno, dia3
Perl Moderno, dia3Perl Moderno, dia3
Perl Moderno, dia3garux
 
Perl Moderno, dia5
Perl Moderno, dia5Perl Moderno, dia5
Perl Moderno, dia5garux
 
Ruby para programadores PHP
Ruby para programadores PHPRuby para programadores PHP
Ruby para programadores PHPJuan Maiz
 
Ruby para-programadores-php
Ruby para-programadores-phpRuby para-programadores-php
Ruby para-programadores-phpJuan Maiz
 
Minicurso de Rails - WTISC 2014
Minicurso de Rails - WTISC 2014Minicurso de Rails - WTISC 2014
Minicurso de Rails - WTISC 2014Zarathon Maia
 
O que é que o Java não tem?
O que é que o Java não tem?O que é que o Java não tem?
O que é que o Java não tem?Denis Costa
 

Semelhante a Ruby (20)

Active record
Active recordActive record
Active record
 
Introdução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação RubyIntrodução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação Ruby
 
Aprendendo ruby
Aprendendo rubyAprendendo ruby
Aprendendo ruby
 
Introdução à Linguagem Ruby
Introdução à Linguagem RubyIntrodução à Linguagem Ruby
Introdução à Linguagem Ruby
 
Ruby on rails gds 2011
Ruby on rails   gds 2011Ruby on rails   gds 2011
Ruby on rails gds 2011
 
Apresentação ruby + rails
Apresentação ruby + railsApresentação ruby + rails
Apresentação ruby + rails
 
Ruby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanosRuby - Criando código para máquinas e humanos
Ruby - Criando código para máquinas e humanos
 
(2014-04-16) [Garoa HC] Strategy
(2014-04-16) [Garoa HC] Strategy(2014-04-16) [Garoa HC] Strategy
(2014-04-16) [Garoa HC] Strategy
 
O que mudou no Ruby 1.9
O que mudou no Ruby 1.9O que mudou no Ruby 1.9
O que mudou no Ruby 1.9
 
Perl Moderno, dia3
Perl Moderno, dia3Perl Moderno, dia3
Perl Moderno, dia3
 
Linguagem PHP
Linguagem PHPLinguagem PHP
Linguagem PHP
 
Minicurso Ruby on Rails
Minicurso Ruby on RailsMinicurso Ruby on Rails
Minicurso Ruby on Rails
 
Perl Moderno, dia5
Perl Moderno, dia5Perl Moderno, dia5
Perl Moderno, dia5
 
Ruby para programadores PHP
Ruby para programadores PHPRuby para programadores PHP
Ruby para programadores PHP
 
Ruby para-programadores-php
Ruby para-programadores-phpRuby para-programadores-php
Ruby para-programadores-php
 
Minicurso de Rails - WTISC 2014
Minicurso de Rails - WTISC 2014Minicurso de Rails - WTISC 2014
Minicurso de Rails - WTISC 2014
 
Python 02
Python 02Python 02
Python 02
 
Aula 1
Aula 1Aula 1
Aula 1
 
Ruby (1)
Ruby (1)Ruby (1)
Ruby (1)
 
O que é que o Java não tem?
O que é que o Java não tem?O que é que o Java não tem?
O que é que o Java não tem?
 

Ruby