diff options
Diffstat (limited to 'pt-br/ruby-pt.html.markdown')
-rw-r--r-- | pt-br/ruby-pt.html.markdown | 68 |
1 files changed, 61 insertions, 7 deletions
diff --git a/pt-br/ruby-pt.html.markdown b/pt-br/ruby-pt.html.markdown index 668cd25f..1078f6c5 100644 --- a/pt-br/ruby-pt.html.markdown +++ b/pt-br/ruby-pt.html.markdown @@ -7,6 +7,7 @@ contributors: - ["Jean Matheus Souto", "http://jeanmatheussouto.github.io"] translators: - ["Katyanna Moura", "https://twitter.com/amelie_kn"] + - ["Alan Peterson Carvalho Silva", "https://twitter.com/DemonKart"] --- ```ruby @@ -101,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 @@ -260,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 @@ -285,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 @@ -301,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}" @@ -362,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 @@ -382,12 +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' ``` -## Mais sobre Ruby +## Recursos adicionais -- [Documentação oficial](http://www.ruby-doc.org/core-2.1.1/) - [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* |