2010-02-21 13 views
12

Perché Ruby espone i simboli per uso esplicito? Non è questo il tipo di ottimizzazione che viene solitamente gestita dall'interprete/compilatore?Perché Ruby espone i simboli?

+0

Grazie a tutti. Stackoverflow è brillante, non è vero, e soprattutto a causa delle persone che lo usano. – Jerome

risposta

9

Parte del problema è che le stringhe di Ruby sono modificabili. Dal momento che ogni stringa allocata da Ruby deve essere indipendente (non può memorizzare nella cache quelli brevi/comuni), è conveniente avere un tipo Symbol per consentire al programmatore di disporre di stringhe essenzialmente immutabili e efficienti in termini di memoria.

Inoltre, condividono molte caratteristiche con enum, ma con meno dolore per il programmatore.

+0

Grazie zenzan, ho capito ora. Penso che avrei già avuto un ragionevole controllo sul come e sul perché dei simboli in Ruby, ma come dici tu è la mutabilità, stringhe come oggetti di prima classe che fanno la differenza. Quindi le cose che sembrano letterali non sono realmente e non possono essere trattate come tali dall'interprete. – Jerome

4

I simboli di rubino vengono utilizzati al posto delle costanti di stringa in altre lingue simili. Oltre al vantaggio prestazionale, possono essere usati per distinguere semanticamente tra i dati delle stringhe e un simbolo più astratto. Essendo sintatticamente diversi, possono chiaramente essere distinti in codice.

+0

Grazie troelskn, sì, immagino che la sfumatura di symbol vs 'literal' sia utile quando si legge il codice. – Jerome

3

Dai un'occhiata al Ruby symbols post.

+0

Bel articolo, grazie khelll – Jerome

+0

Si potrebbe anche voler guardare http://www.randomhacks.net/articles/2007/01/20/13-ways-of-looking-at-a-ruby-symbol –

Problemi correlati