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`
pull/35203/head^2
Jonathan Martins 2019-08-16 15:41:57 -03:00 committed by Randell Dawson
parent bff9327059
commit f1e6fad974
1 changed files with 45 additions and 43 deletions

View File

@ -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
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,28 +98,27 @@ 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,