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* |