summaryrefslogtreecommitdiffhomepage
path: root/pt-br/ruby-pt.html.markdown
diff options
context:
space:
mode:
authorhyphz <drmoose94@gmail.com>2017-07-18 17:56:42 +0100
committerhyphz <drmoose94@gmail.com>2017-07-18 17:56:42 +0100
commit5ab5cb9800822d607be2c6ac943377811db98158 (patch)
tree3c804707822744c20da1de54ff60fc8c3197781b /pt-br/ruby-pt.html.markdown
parent62102d02992f83b3a1fb745a39f36332dd4435b7 (diff)
parent6e7c5c793327f4a63b13e555894597915ca91fda (diff)
Merge remote-tracking branch 'adambard/master'
Diffstat (limited to 'pt-br/ruby-pt.html.markdown')
-rw-r--r--pt-br/ruby-pt.html.markdown68
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*