# Ancora sui simboli

**URL:** <https://www.ruby-forum.com/t/ancora-sui-simboli/97218>\
**Category:** IT\
**Created:** [July 5, 2006, 6:31pm UTC](https://www.ruby-forum.com/t/ancora-sui-simboli/97218 "2006-07-05T18:31:21Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![michelangelo\_giacom](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/c4cdca/32.png) [@michelangelo\_giacom](https://www.ruby-forum.com/u/michelangelo_giacom)\
**Post date:** [July 5, 2006, 6:31pm UTC](https://www.ruby-forum.com/t/ancora-sui-simboli/97218/1 "2006-07-05T18:31:21Z")

</div>

grazie per la tempestiva risposta, diciamo che avevo capito come usare i  
simboli come degli enum rinforzati, ma non mi è ancora chiaro l’utilizzo  
“come nomi di metodi per chiamate dinamiche” ne come mai il seguente  
codice:  
cane = cane  
:cane  
puts cane  
puts :cane  
stampi cane, cane come se trasformasse il simbolo nella stringa  
corrispondente, credo di aver compreso blocchi, sintassi etc, ma questa  
storia dei simboli non la digerisco bene, ciao a tutti

---

<div class="post-metadata">

**Author:** ![michelangelo\_giacom](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/c4cdca/32.png) [@michelangelo\_giacom](https://www.ruby-forum.com/u/michelangelo_giacom)\
**Post date:** [July 5, 2006, 6:37pm UTC](https://www.ruby-forum.com/t/ancora-sui-simboli/97218/2 "2006-07-05T18:37:22Z")

</div>

se passato a puts il simbolo si trasforma in stringa.  
è come se il tuo enum forzato non fosse esattamente RED = 3 ma RED = “RED”  
solo che se dici RED = “RED”, allora tanto vale dire :red che fai prima  
🙂

poi come spiegava paolo, tutti i vari :red che trovi in giro fanno  
riferimento a un’unica locazione di memoria.

per le chiamate dinamiche considera che:

puts “hallo”

e

puts “hallo”.to\_s

e

puts (“hallo”.send :to\_s)

fanno la stessa cosa, in modo sempre più ‘profondo’ e vicino al vero  
funzionamento del sistema.

a questo punto puoi fare anche

method = :to\_s  
puts (“hallo”.send method)

e in pratica controlli dinamicamente quale metodo viene invocato sulla  
strinaga ‘hallo’ senza una valanga di if che devono decidere quale  
metodo  
chiamare in base a quale enum viene passata.

On 7/5/06, michelangelo giacomelli [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> corrispondente, credo di aver compreso blocchi, sintassi etc, ma questa  
> storia dei simboli non la digerisco bene, ciao a tutti
> 
> * * *
> 
> Ml mailing list  
> removed\_email\_address@domain.invalid  
> [http://lists.ruby-it.org/mailman/listinfo/ml](http://lists.ruby-it.org/mailman/listinfo/ml)

## – Chiaroscuro

Liquid Development: [http://liquiddevelopment.blogspot.com/](http://liquiddevelopment.blogspot.com/)
