From f1e6fad974b3b9191e41af85a65c0ae76f2199c9 Mon Sep 17 00:00:00 2001 From: Jonathan Martins Date: Fri, 16 Aug 2019 15:41:57 -0300 Subject: [PATCH] Update ruby symbols portuguese guide (#32295) Translation based on english guide: `https://github.com/freeCodeCamp/freeCodeCamp/blob/master/guide/english/ruby/ruby-symbols/index.md` --- guide/portuguese/ruby/ruby-symbols/index.md | 88 +++++++++++---------- 1 file changed, 45 insertions(+), 43 deletions(-) diff --git a/guide/portuguese/ruby/ruby-symbols/index.md b/guide/portuguese/ruby/ruby-symbols/index.md index fba8aaba51f..ccd79fc631a 100644 --- a/guide/portuguese/ruby/ruby-symbols/index.md +++ b/guide/portuguese/ruby/ruby-symbols/index.md @@ -4,33 +4,36 @@ localeTitle: Ruby Symbols --- ## Ruby Symbols -Um símbolo se parece com um nome de variável, mas é prefixado com dois pontos. Exemplos -: action,: line\_items Você não tem que pré-declarar um símbolo e é garantido que ele é único. Não há necessidade de atribuir algum tipo de valor a um símbolo - Ruby cuida disso para você. O Ruby também garante que, não importa onde ele apareça no seu programa, um símbolo específico terá o mesmo valor. +Um símbolo se parece com um nome de variável, mas é prefixado com dois pontos. Exemplos - `:action`, `:line_items`. Você não tem que pré-declarar um símbolo e é garantido que ele é único. Não há necessidade de atribuir algum tipo de valor a um símbolo - Ruby cuida disso para você. O Ruby também garante que, não importa onde ele apareça no seu programa, um símbolo específico terá o mesmo valor. -Alternativamente, você pode considerar os dois pontos para significar "coisa chamada" assim: id é "a coisa chamada id". Você também pode pensar em: id como significando o nome da variável id e plain id como significando o valor da variável. +Alternativamente, você pode considerar os dois pontos para significar "coisa chamada" assim `:id` é "a coisa chamada id". Você também pode pensar em `:id` como significando o nome da variável id e plain id como significando o valor da variável. -Por ex: Assim, se Fred é uma constante em um contexto, um método em outro e uma classe em um terceiro, o símbolo: Fred será o mesmo objeto em todos os três contextos. +Por ex: Assim, se Fred é uma constante em um contexto, um método em outro e uma classe em um terceiro, o símbolo `:Fred` será o mesmo objeto em todos os três contextos. ```ruby -module One +module One class Fred end $f1 = :Fred - end - module Two +end + +module Two Fred = 1 $f2 = :Fred - end - def Fred() - end - $f3 = :Fred - $f1.object_id #=> 2514190 - $f2.object_id #=> 2514190 - $f3.object_id #=> 2514190 +end + +def Fred() +end + +$f3 = :Fred +$f1.object_id #=> 2514190 +$f2.object_id #=> 2514190 +$f3.object_id #=> 2514190 ``` ## Trabalhando com Símbolos -Você pode reconhecer um Símbolo Ruby porque será uma palavra que começa com:. +Você pode reconhecer um Símbolo Ruby porque será uma palavra que começa com `:`. Até agora nós os vimos como a chave em um Hash (Trabalhando com Hashes em Ruby): @@ -42,25 +45,25 @@ Então, a primeira coisa que podemos fazer é inspecionar um símbolo para ver q ```ruby :hello.class - => Symbol +=> Symbol - "hello".class - => String +"hello".class +=> String ``` Assim, podemos ver que Símbolos e Strings são instâncias de dois objetos diferentes. -Você pode chamar métodos String-como como `upcase` , `downcase` e `capitalize` sobre Símbolos: +Você pode chamar métodos String como `upcase`, `downcase` e `capitalize` em Símbolos: ```ruby :hello.upcase - => :HELLO +=> :HELLO - :HELLO.downcase - => :hello +:HELLO.downcase +=> :hello - :hello.capitalize - => :Hello +:hello.capitalize +=> :Hello ``` ## Por que você usaria um símbolo em vez de uma String? @@ -71,17 +74,17 @@ Então, se um símbolo é apenas uma string imutável, por que você o usaria, e Em primeiro lugar, uma das grandes razões é, como mencionei acima, os símbolos são imutáveis. Erros imprevistos podem surgir em seu aplicativo quando um valor pode mudar. Se você precisa garantir que o valor de um objeto nunca mude, é muito mais seguro usar um objeto imutável. -No entanto, com isso dito, é possível tornar uma String imutável em Ruby chamando o método `freeze` : +No entanto, com isso dito, é possível tornar uma String imutável em Ruby chamando o método `freeze`: ```ruby name = "Philip" - => "Philip" +=> "Philip" - name.freeze - => "Philip" +name.freeze +=> "Philip" - name << "Jim" - RuntimeError: can't modify frozen String +name << "Jim" +RuntimeError: can't modify frozen String ``` Como você pode ver no exemplo acima, depois de chamar o método freeze em uma instância de String, não será mais possível modificá-lo. @@ -95,35 +98,34 @@ Uma segunda razão pela qual você usaria um símbolo em uma sequência em deter Por exemplo: ```ruby -philip".object_id - => 70288511587360 - "philip".object_id - => 70288504327720 - - :philip.object_id - => 539368 - :philip.object_id - => 539368 +"philip".object_id +=> 70288511587360 +"philip".object_id +=> 70288504327720 +:philip.object_id +=> 539368 +:philip.object_id +=> 539368 ``` Quando você cria dois objetos String com o mesmo valor, esses dois objetos são tratados como dois objetos diferentes. Quando você cria um símbolo, referenciando o símbolo sempre usará o mesmo objeto. -Isso é muito melhor para o desempenho porque o mesmo objeto String será criado e destruído repetidamente quando, na realidade, o mesmo objeto pode ser reutilizado a cada vez. +Isso é muito melhor para o desempenho porque o mesmo objeto String será criado e destruído repetidamente quando na realidade o mesmo objeto pode ser reutilizado a cada vez. #### Métodos de Classe Pública -all\_symbols => array clica para alternar a fonte Retorna uma matriz de todos os símbolos atualmente na tabela de símbolos do Ruby. +`all_symbols` - Retorna uma matriz de todos os símbolos atualmente na tabela de símbolos do Ruby. ```ruby Symbol.all_symbols.size #=> 903 - Symbol.all_symbols[1,20] #=> [:floor, :ARGV, :Binding, :symlink, +Symbol.all_symbols[1,20] #=> [:floor, :ARGV, :Binding, :symlink, :chown, :EOFError, :$;, :String, :LOCK_SH, :"setuid?", :$<, :default_proc, :compact, :extend, :Tms, :getwd, :$=, :ThreadGroup, - :wait2, :$>] + :wait2, :$>] ``` #### Mais Informações: -[Documentação de Símbolos Ruby](http://ruby-doc.org/core-2.5.1/Symbol.html) \ No newline at end of file +[Documentação de Símbolos Ruby](http://ruby-doc.org/core-2.5.1/Symbol.html)