2. Quem eu souQuem eu sou
quem = {
:nome => 'Luiz Sanches',
:link => 'about.me/luizsanches'
}
puts 'Apenas mais um #tasafoemacao'
http://www.flickr.com/photos/brunodaher/4491575723http://www.flickr.com/photos/brunodaher/4491575723
18. Quando? Onde? Quem? Por quê?Quando? Onde? Quem? Por quê?
Em 1995, no Japão, Yukihiro
"Matz" Matsumoto queria
uma linguagem de script
poderosa, totalmente
orientada a objetos e a
pessoas.
Ruby era a pedra zodiacal
de um amigo de Matz.
http://www.hephesto.com/agrega/wp-content/uploads/2008/11/yukihiro_matsumoto.jpg
19. Bem depois, um framework web a colocou nos trilhosBem depois, um framework web a colocou nos trilhos
http://www.flickr.com/photos/shahrashoob/2036409933http://www.flickr.com/photos/shahrashoob/2036409933
20. Seus tipos de dados são:Seus tipos de dados são:
1.class # Fixnum
10000000000.class # Bignum
1.0.class # Float
"palavra".class # String
:nome.class # Symbol
(1..10).class # Range
[1, 'dois'].class # Array
traduz = {'um' => 'one', 'dois' => 'two'}.class # Hash
/expressao/.class # Regexp
true.class # TrueClass
false.class # FalseClass
nil.class # NilClass
http://www.flickr.com/photos/shockcr/3753474120
21. Mas no final, TUDO éMas no final, TUDO é
self.class # Object
1.class # Fixnum
1.class.superclass # Integer
1.class.superclass.superclass # Numeric
1.class.superclass.superclass.superclass # Object
http://www.flickr.com/photos/58782395@N03/5518992555
28. SeSe
http://www.flickr.com/photos/golbenge/5400710724
n1, n2 = 5, 10
if n1 > n2
puts "#{n1} é maior que #{n2}"
elsif n2 > n1
puts "#{n2} é maior que #{n1}"
else
puts 'Os números são iguais'
end
unless n1 > n2 # senão
puts "#{n2} é maior que #{n1}"
end
puts "#{n1} é " + (n1 % 2 == 0 ? 'par' : 'ímpar')
puts “só imprimo se a condição for verdadeira” if n1 > n2
32. Blocos e IteradoresBlocos e Iteradores
http://www.flickr.com/photos/lassochist/4013140613http://www.flickr.com/photos/lassochist/4013140613
compras = [ 'arroz', 'feijão', 'açúcar' ]
compras.each do |item|
puts item
end
compras.each { |item| puts item }
documentos = { :rg=>'86474837', :cpf=>'3653364645' }
documentos.each {|chave, valor| puts "#{chave} = #{valor}"}
33. MétodosMétodos
def grita
puts 'TO GRITANDO!'
end
grita
def soma(n1, n2)
n1 + n2
end
soma(5, 6)
soma 7, 3
http://www.flickr.com/photos/olhardefotografas/3006021111http://www.flickr.com/photos/olhardefotografas/3006021111
def executo_bloco(n)
yield(n)
end
executo_bloco(4) {|i| i * i}
executo_bloco(4) {|i| i + i}
nome = 'Marta'
# (?) predicados
nome.include? 'M'
nome.include? 'f'
# (!) destrutivos
nome.upcase, nome
nome.upcase!, nome
34. Classes e herançaClasses e herança
http://www.flickr.com/photos/doobious/51242759
class Pessoa
def initialize(nome) # construtor
@nome = nome # de instância
end
def nome # get
@nome
end
def nome=(novo_nome) # set
@nome = novo_nome
end
end
class Homem < Pessoa
def initialize(nome)
super(nome)
end
end
# instanciando um objeto
fulano = Homem.new('Ambrósio')
fulano.nome
fulano.nome = 'Vanderlucio'
fulano.nome
35. Tipagem dinâmica e forteTipagem dinâmica e forte
http://www.flickr.com/photos/mermaid/78134957http://www.flickr.com/photos/mermaid/78134957
# posso ser o que eu quiser
variavel = 'sou uma string'
variavel = 10
# mas não posso abusar
valor1 = 100
valor2 = '200'
# soma = valor1 + valor2 # erro na certa!
soma = valor1 + valor2.to_i # agora funfa!
junta = valor1.to_s + valor2 # também funfa!
36. Açúcar Sintático (Legibilidade)Açúcar Sintático (Legibilidade)
http://www.flickr.com/photos/ronaldpeixoto/5203811885http://www.flickr.com/photos/ronaldpeixoto/5203811885
# quando você faz
calculo = 2 + 3
apelido = 'Farol'
class Mulher
attr_writer :nome
end
fulana = Mulher.new
fulana.nome = 'Ana'
# Ruby está fazendo
calculo = 2.+(3)
apelido = String.new('Farol')
class Mulher
def nome=(nome)
@nome=nome
end
end
fulana = Mulher.new
fulana.nome=('Ana')
43. Mineral utilizado em joalheriaMineral utilizado em joalheria
http://www.flickr.com/photos/raymond_li/3844312974http://www.flickr.com/photos/raymond_li/3844312974
44. RubyGemsRubyGems
- Gerenciador de pacotes (programas e bibliotecas) do Ruby
- Pacote = Gema
- Gerencia dependências (similar ao apt-get do Debian)
- Fonte padrão das gemas: http://rubygems.org
Exemplos:
gem install rails
gem install mongoid
gem list
gem uninstall dbi
http://marcgrabanski.com/img/rubygems.png
45. ReferênciasReferências
> Aprenda a programar (Chris Pine)
aprendaaprogramar.rubyonrails.pro.br
> Tutorial de Ruby (Eustáquio "TaQ" Rangel)
eustaquiorangel.com/downloads
> O (comovente) guia de Ruby do Why
why.nomedojogo.com
> The Book Of Ruby (Huw Collingbourne)
sapphiresteel.com/The-Book-Of-Ruby
http://www.flickr.com/photos/estopa/176637167http://www.flickr.com/photos/estopa/176637167
46. VisiteVisite
> Site oficial com versão em português (de Portugal)
ruby-lang.org/pt
> Ruby Brasil
ruby-br.org
> GURU-PA
guru-pa.blogspot.com
http://www.flickr.com/photos/a7design1/3961877456http://www.flickr.com/photos/a7design1/3961877456