diff options
Diffstat (limited to 'pt-br/ruby-pt.html.markdown')
| -rw-r--r-- | pt-br/ruby-pt.html.markdown | 76 | 
1 files changed, 68 insertions, 8 deletions
| diff --git a/pt-br/ruby-pt.html.markdown b/pt-br/ruby-pt.html.markdown index 89a051d4..1078f6c5 100644 --- a/pt-br/ruby-pt.html.markdown +++ b/pt-br/ruby-pt.html.markdown @@ -4,8 +4,10 @@ lang: pt-br  filename: learnruby-pt.rb  contributors:    - ["Bruno Henrique - Garu", "http://garulab.com"] +  - ["Jean Matheus Souto", "http://jeanmatheussouto.github.io"]  translators:    - ["Katyanna Moura", "https://twitter.com/amelie_kn"] +  - ["Alan Peterson Carvalho Silva", "https://twitter.com/DemonKart"]  ---  ```ruby @@ -100,7 +102,7 @@ caminho_para_a_raiz_do_projeto = '/bom/nome/'  caminho = '/nome/ruim/'  # Símbolos (são objetos) -# Símbolos são imutáveis, são constantes reutilizáveis representadadas +# Símbolos são imutáveis, são constantes reutilizáveis representados  # internamente por um valor inteiro. Eles são frequentemente usados no  # lugar de strings para transmitir com eficiência os valores específicos  # e significativos @@ -161,9 +163,6 @@ hash['numero'] #=> 5  hash['nada aqui'] #=> nil  # Interar sobre hashes com o método #each: -hash.each do |k, v| -  puts "#{k} is #{v}" -end  hash.each do |k, v|    puts "#{k} é #{v}" @@ -262,7 +261,7 @@ somar 3, 4 #=> 7  somar(3,4), 5 #=> 12  # yield -# Todos os métodos possuem implicitamente um paramêntro opcional que é um bloco +# Todos os métodos possuem implicitamente um paramêtro opcional que é um bloco  # ele pode ser chamado com a palavra chave 'yield'  def ao_redor @@ -287,7 +286,7 @@ class Humano    # Inicialização básica (contructor)    def initialize(nome, idade=0) -    # Atribui o argumento para a variável de instancia "nome" do objeto +    # Atribui o argumento para a variável de instância "nome" do objeto      @nome = nome      # Se a idade não for passada, nós definimos um valor padrão na lista de argumentos      @idade = idade @@ -303,7 +302,7 @@ class Humano      @nome    end -  # Um método de classe usa a palavra chave self para se defenciar dos métodos de instância. +  # Um método de classe usa a palavra chave self para se diferenciar dos métodos de instância.    # Ele só pode ser chamado na classe, não na instancia    def self.diz(msg)      puts "#{msg}" @@ -364,7 +363,7 @@ Trabalhador.foo # 0  Humano.foo = 2 # 2  Trabalhador.foo # 2 -# Uma variável de instância não é compartilhada por suas classes decendentes. +# Uma variável de instância não é compartilhada por suas classes descendentes.  class Humano    @bar = 0 @@ -384,4 +383,65 @@ end  Humano.bar # 0  Doutor.bar # nil +--- + +module ModuloDeExemplo +  def foo +    'foo' +  end +end + +# Incluir (include) módulos conecta seus métodos às instâncias da classe  +# Herdar (extend) módulos conecta seus métodos à classe em si + +class Pessoa +  include ExemploDeModulo +end + +class Livro +  extend ExemploDeModulo +end + +Pessoa.foo     # => NoMethodError: undefined method `foo' for Pessoa:Class +Pessoa.new.foo # => 'foo' +Livro.foo       # => 'foo' +Livro.new.foo   # => NoMethodError: undefined method `foo' + +# Callbacks são executados ao incluir e herdar um módulo + +module ExemploDeConceito +  def self.included(base) +    base.extend(MetodosDeClasse) +    base.send(:include, MetodosDeInstancia) +  end + +  module MetodosDeClasse +    def bar +      'bar' +    end +  end + +  module MetodosDeInstancia +    def qux +      'qux' +    end +  end +end + +class Algo +  include ExemploDeConceito +end + +Algo.bar     # => 'bar' +Algo.qux     # => NoMethodError: undefined method `qux' +Algo.new.bar # => NoMethodError: undefined method `bar' +Algo.new.qux # => 'qux'  ``` + +## Recursos adicionais + +- [Aprenda Ruby com desafios](http://www.learneroo.com/modules/61/nodes/338) - Uma coleção de desafios para testar a linguagem. +- [Documentação oficial](http://www.ruby-doc.org/core-2.1.1/) +- [Ruby a partir de outras linguagens](https://www.ruby-lang.org/en/documentation/ruby-from-other-languages/) +- [Programming Ruby](http://www.amazon.com/Programming-Ruby-1-9-2-0-Programmers/dp/1937785491/)- Um mais antigo [free edition](http://ruby-doc.com/docs/ProgrammingRuby/) e tambem uma versão online disponível. +- [Ruby Style Guide](https://github.com/bbatsov/ruby-style-guide) - Uma versão colaborativa de um *style-guide* | 
