Articles

RubyLearning.com

< Intervalli | TOC | Hash >

Un simbolo ha l’aspetto di un nome di variabile ma ha il prefisso di due punti. Esempi -: action,: line_items. Non devi pre-dichiarare un simbolo e sono garantiti per essere unici. Non è necessario assegnare un qualche tipo di valore a un simbolo: Ruby si prende cura di questo per te. Ruby garantisce anche che non importa dove appare nel tuo programma, un particolare simbolo avrà lo stesso valore.

In alternativa, puoi considerare i due punti come “cosa chiamata” quindi: id è ” la cosa chiamata id.”Puoi anche pensare a: id come significato del nome della variabile id e plain id come significato del valore della variabile.

Un simbolo è l’oggetto Ruby più semplice che puoi creare. È solo un nome e un ID interno. I simboli sono utili perché un determinato nome di simbolo si riferisce allo stesso oggetto in un programma Ruby. I simboli sono più efficienti delle stringhe. Due stringhe con lo stesso contenuto sono due oggetti diversi, ma per ogni nome dato esiste un solo oggetto Simbolo. Questo può risparmiare tempo e memoria.

Fare riferimento all’esempio: p039symbol.rb sotto

L’output quando ho eseguito il programma sul mio PC era:

Quindi, quando usiamo una stringa contro un simbolo?

  • Se il contenuto (la sequenza di caratteri) dell’oggetto è importante, usa una stringa
  • Se l’identità dell’oggetto è importante, usa un simbolo

Ruby usa i simboli e mantiene una Tabella dei simboli per tenerli. I simboli sono nomi-nomi di variabili di istanza, nomi di metodi, nomi di classi. Quindi, se c’è un metodo chiamato control_movie, c’è automaticamente un simbolo :control_movie. Ruby è interpretato, quindi mantiene il suo tavolo dei simboli a portata di mano in ogni momento. Si può scoprire che cosa è su di esso in un dato momento chiamando Simbolo.all_simboli.
Un oggetto Simbolo viene creato prefissando un operatore, stringa, variabile, costante, metodo, classe, nome del modulo con i due punti. L’oggetto simbolo sarà univoco per ogni nome diverso, ma non si riferisce a una particolare istanza del nome, per la durata dell’esecuzione di un programma. Quindi, se Fred è una costante in un contesto, un metodo in un altro e una classe in un terzo, il simbolo :Fred sarà lo stesso oggetto in tutti e tre i contesti.

Questo può essere illustrato da questo semplice programma – p039xsymbol.rb:

L’output quando ho eseguito il programma sul mio PC era:

Ecco un altro esempio: p039xysymbol.rb:

L’output è:

In questo esempio, :yes è un simbolo. I simboli non contengono valori o oggetti,come le variabili. Invece, vengono utilizzati come un nome coerente all’interno del codice. Ad esempio, nel codice precedente si potrebbe facilmente sostituire il simbolo con una stringa, come nell’esempio – p039xyzsymbol.rb

Questo dà lo stesso risultato, ma non è altrettanto efficiente. In questo esempio, ogni menzione di ‘ yes ‘ crea un nuovo oggetto memorizzato separatamente in memoria, mentre i simboli sono singoli valori di riferimento che vengono inizializzati solo una volta. Nel primo esempio di codice, only: yes esiste, mentre nel secondo esempio si finisce con le stringhe complete di ‘yes’ e ‘yes’ che occupano memoria.

Possiamo anche trasformare una Stringa in un Simbolo e viceversa:

I simboli sono particolarmente utili quando si creano hash e si desidera avere una distinzione tra chiavi e valori. Si prega di fare riferimento all’uso di simboli come chiavi Hash per un esempio pratico.

Fabio Akita un appassionato brasiliano di rotaie, conosciuto anche online come “AkitaOnRails”, ha scritto questo articolo esclusivo sui simboli Ruby per rubylearning.com membri come te. Leggi l’articolo, dopo aver seguito questa lezione.

Nota: Il logo Ruby è Copyright (c) 2006, Yukihiro Matsumoto. Ho fatto ampi riferimenti alle informazioni, relative a Ruby, disponibili nel pubblico dominio (wiki e blog, articoli di vari Guru di Ruby), il mio riconoscimento e grazie a tutti loro. Gran parte del materiale su rubylearning.com e nel corso a rubylearning.org è tratto principalmente dalla programmazione Ruby book, disponibile dalla libreria Pragmatic.

< Intervalli / TOC / Hash>