# :variabile e variabile

**URL:** <https://www.ruby-forum.com/t/variabile-e-variabile/114142>\
**Category:** IT\
**Created:** [September 8, 2007, 2:10pm UTC](https://www.ruby-forum.com/t/variabile-e-variabile/114142 "2007-09-08T14:10:55Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![simone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/cab0a1/32.png) [@simone](https://www.ruby-forum.com/u/simone)\
**Post date:** [September 8, 2007, 2:10pm UTC](https://www.ruby-forum.com/t/variabile-e-variabile/114142/1 "2007-09-08T14:10:55Z")

</div>

Trattatemi male a piacere, ma questa domanda la devo fare.  
non riesco ancora a comprendere appieno la differenza tra  
usare :variabile e variabile  
e quando esattamente si usa l’una o l’altra forma.  
qualcuno mi spiega?  
Grazie

---

<div class="post-metadata">

**Author:** ![simone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/cab0a1/32.png) [@simone](https://www.ruby-forum.com/u/simone)\
**Post date:** [September 8, 2007, 5:11pm UTC](https://www.ruby-forum.com/t/variabile-e-variabile/114142/2 "2007-09-08T17:11:16Z")

</div>

— Simone [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Trattatemi male a piacere, ma questa domanda la devo  
> fare.  
> non riesco ancora a comprendere appieno la  
> differenza tra  
> usare :variabile e variabile

:variabile è un literal, è come se scrivessi 1 o  
‘ciao’. Non è una variabile, quindi d’ora in poi  
diremo :foo.

l’altra è invece una vera variabile e quindi può  
essere un riferimento a un oggetto qualsiasi.

Se tu scrivi  
p :foo  
avrai sempre  
:foo  
se invece scrivi  
p foo  
vedrai mostrato il valore attuale della variabile  
“foo”, o un errore se non esiste.

Immagino però che tu abbia questo problema in un  
contesto preciso, quindi ti invito a dircelo così ci  
capiamo meglio 🙂

```
  ___________________________________________________________

```

Yahoo! Answers - Got a question? Someone out there knows the answer. Try  
it  
now.

> **[Yahoo | Mail, Weather, Search, Politics, News, Finance, Sports & Videos](https://www.yahoo.com/)**
>
> Latest news coverage, email, free stock quotes, live scores and video are just the beginning. Discover more every day at Yahoo!

---

<div class="post-metadata">

**Author:** ![simone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/cab0a1/32.png) [@simone](https://www.ruby-forum.com/u/simone)\
**Post date:** [September 9, 2007, 8:28pm UTC](https://www.ruby-forum.com/t/variabile-e-variabile/114142/3 "2007-09-09T20:28:52Z")

</div>

Credo che tu voglia conoscere la differenza tra Symbol e String,  
piuttosto che con le variabili, le quali funzionano come in qualsiasi  
altro linguaggio.

I Symbol sono dei semplici oggetti a cui ci si può riferire con il loro  
stesso nome. Quando usi :foo, il valore letterale dopo i due punti viene  
‘internalizzato’ ([http://mindprod.com/jgloss/interned.html](http://mindprod.com/jgloss/interned.html)), divenendo  
immutabile ed unico nel contesto della VM. Per unico intendo dire che si  
riferisce allo stesso indirizzo di memoria. Ne deriva che dal loro  
utilizzo si possono ottenere delle migliorìe prestazionali.

Esempio:  
Supponi di voler creare un link, utilizzando l’apposito helper di Rails.

link\_to ‘foobar’, ‘controller’ =\> foo, ‘action’ =\> bar

Immagina ora di avere cento requests, quando l’ERB andrà ad interpretare  
questa istruzione, instanzierà cento volte le stringhe ‘controller’ ed  
‘action’. Capisci che è perfettamente inutile e dannoso in termini di  
efficienza, sarebbe meglio instanziare una sola volta gli oggetti per  
tutte le richieste HTTP. Meglio utilizzare due Symbol.

Ti rimando ad un interessate post:

> **[13 Ways of Looking at a Ruby Symbol | Random Hacks](http://www.randomhacks.net.s3-website-us-east-1.amazonaws.com/2007/01/20/13-ways-of-looking-at-a-ruby-symbol/)**
>
> Random code snippets, projects and musings about software from Eric Kidd, a developer and occasional entrepreneur.

–  
blog: [www.lucaguidi.com](http://www.lucaguidi.com)

Bringing Rails to Italy  
First italian Ruby On Rails conference:  
Oct, 26-27 2007 - Pisa  
[www.railstoitaly.org](http://www.railstoitaly.org)

---

<div class="post-metadata">

**Author:** ![simone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/cab0a1/32.png) [@simone](https://www.ruby-forum.com/u/simone)\
**Post date:** [September 10, 2007, 12:19am UTC](https://www.ruby-forum.com/t/variabile-e-variabile/114142/4 "2007-09-10T00:19:58Z")

</div>

Scrivere :variabile Ã¨ (quasi) come scrivere “variabile” (quindi puoi  
vederla come una semplice stringa).

Simone wrote:

> Trattatemi male a piacere, ma questa domanda la devo fare.  
> non riesco ancora a comprendere appieno la differenza tra  
> usare :variabile e variabile  
> e quando esattamente si usa l’una o l’altra forma.  
> qualcuno mi spiega?  
> Grazie

---

<div class="post-metadata">

**Author:** ![simone](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/cab0a1/32.png) [@simone](https://www.ruby-forum.com/u/simone)\
**Post date:** [September 25, 2007, 11:05pm UTC](https://www.ruby-forum.com/t/variabile-e-variabile/114142/5 "2007-09-25T23:05:24Z")

</div>

> ‘ciao’. Non è una variabile, quindi d’ora in poi  
> vedrai mostrato il valore attuale della variabile  
> “foo”, o un errore se non esiste.
> 
> Immagino però che tu abbia questo problema in un  
> contesto preciso, quindi ti invito a dircelo così ci  
> capiamo meglio 🙂

No, non ho un contesto preciso, sto leggendo un libro su ruby e non  
mi era chiaro questo passaggio.  
Comunque adesso mi è chiaro grazie.
