Articles

RubyLearning.com

<Ranges | TOC/hashs>

um símbolo parece um nome variável, mas é prefixado com dois pontos. Exemplos -: acção,: rubricas line_. Você não tem que pré-declarar um símbolo e eles são garantidos para ser único. Não há necessidade de atribuir algum tipo de valor a um símbolo – Ruby cuida disso para você. Ruby também garante que não importa onde ele aparece em seu programa, um símbolo particular terá o mesmo valor.

Alternativamente, você pode considerar que o cólon significa “coisa chamada” então: id é ” a coisa chamada id.”Você também pode pensar em :id como significando o nome da variável id, e ID simples como significando o valor da variável.

Um símbolo é o objecto Ruby mais básico que pode criar. É só um nome e uma identificação interna. Os símbolos são úteis porque um dado nome de Símbolo se refere ao mesmo objeto ao longo de um programa de Ruby. Os símbolos são mais eficientes do que as cordas. Duas strings com o mesmo conteúdo são dois objetos diferentes, mas para qualquer nome dado há apenas um objeto símbolo. Isto pode poupar tempo e memória.

ver o exemplo: p039symbol.rb abaixo

A saída quando executei o programa no meu PC foi:

Portanto, quando utilizamos uma seqüência de caracteres versus um símbolo?

  • Se o conteúdo (seqüência de caracteres) do objeto são importantes, use uma seqüência de caracteres
  • Se a identidade do objeto é importante, usar um símbolo

Ruby usa símbolos, e mantém uma Tabela de símbolos para mantê-los. Símbolos são nomes-nomes de variáveis de instância, nomes de métodos, nomes de classes. Então, se existe um método chamado control_ Movie, existe automaticamente um símbolo: control_ Movie. A Ruby é interpretada, por isso mantém sempre a mesa de Símbolos à mão. Você pode descobrir o que está nele a qualquer momento chamando o símbolo.all_symbols.um objeto símbolo é criado por prefixação de um operador, cadeia de caracteres, variável, constante, método, Classe, nome do módulo com dois pontos. O objeto símbolo será único para cada nome diferente, mas não se refere a uma instância particular do nome, para a duração da execução de um programa. 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.

isto pode ser ilustrado por este programa simples-p039xsymbol.rb:

A saída quando executei o programa no meu PC foi:

Aqui está outro exemplo – p039xysymbol.rb:

a saída é:

neste exemplo, :Sim é um símbolo. Os símbolos não contêm valores ou objectos, como as variáveis. Em vez disso, são usados como um nome consistente em código. Por exemplo, no código anterior você poderia facilmente substituir o símbolo por uma cadeia, como no exemplo – p039xyzsymbol.rb

isto dá o mesmo resultado, mas não é tão eficiente. Neste exemplo, cada menção de ” sim ” cria um novo objeto armazenado separadamente na memória, enquanto símbolos são valores de referência únicos que só são inicializados uma vez. No primeiro exemplo de código, somente: sim existe, enquanto no segundo exemplo você acaba com as cadeias completas de ‘SIM’ e ‘sim’ tomando memória.

também podemos transformar uma cadeia em símbolo e vice-versa:Os símbolos

Os símbolos são particularmente úteis ao criar traços e você quer ter uma distinção entre chaves e valores. Por favor, consulte Usar símbolos como teclas de Hash para um exemplo prático.Fabio Akita um entusiasta Brasileiro de trilhos, também conhecido online como “AkitaOnRails”, escreveu este artigo exclusivo sobre Símbolos de rubi para o rubylearning.com membros como você. Leia o artigo, depois de ter passado por esta lição.

Nota: O logotipo da Ruby é Copyright (c) 2006, Yukihiro Matsumoto. Eu fiz extensas referências a informações, relacionadas com Ruby, disponíveis no domínio público (wikis e blogs, artigos de vários gurus Ruby), meu reconhecimento e obrigado a todos eles. Grande parte do material sobre rubylearning.com e no curso em rubylearning.org é desenhado principalmente a partir do Ruby book de programação, disponível na montra de livros Pragmática.

<Ranges | TOC / hashs>