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?
risposta
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.
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
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.
Grazie troelskn, sì, immagino che la sfumatura di symbol vs 'literal' sia utile quando si legge il codice. – Jerome
Dai un'occhiata al Ruby symbols post.
Bel articolo, grazie khelll – Jerome
Si potrebbe anche voler guardare http://www.randomhacks.net/articles/2007/01/20/13-ways-of-looking-at-a-ruby-symbol –
- 1. Utilizzo dei simboli come argomenti per i metodi ruby
- 2. Perché i motori di ricerca ignorano i simboli?
- 3. ruby: ordina la matrice di simboli
- 4. Esiste un equivalente Python simboli di Ruby?
- 5. Come usare i simboli + =, * =, - =
- 6. Come funzionano i simboli?
- 7. PERCHÉ WCF 'correttamente' consuma/espone i tipi astratti quando è ospitato come servizio Web
- 8. ListBox WPF che espone i suoi articoli orizzontalmente
- 9. Simboli simboli non integrati
- 10. Alcune semplici domande su Ruby: iteratori, blocchi e simboli
- 11. Perché Ruby not Symbol # = ~ (regex match operator)?
- 12. Perché i metodi Singleton non possono essere definiti su Simboli o Fixnum?
- 13. ld segnala simboli mancanti, ma i simboli sembrano esistere
- 14. Dove sono i simboli gcov?
- 15. Perché il comando sed contenere simboli
- 16. Perché non è una buona idea creare dinamicamente molti simboli in ruby?
- 17. Rubino Koan: perché convertire elenco di simboli in stringhe
- 18. Servizio WCF che espone DTO o entità
- 19. Il serializzatore JMS non espone una proprietà
- 20. Come si accede alla tabella dei simboli in Ruby?
- 21. Ruby: NoMethodError, ma perché?
- 22. Perché Ruby ha Numeric.new?
- 23. Inserire i simboli unicode in edittext
- 24. Come mostrare i simboli matematici come theta
- 25. VS2010 Il profiler non trova i simboli
- 26. impossibile copiare i simboli da questo dispositivo
- 27. Come vengono risolti i simboli esterni?
- 28. Xamarin Forms: Incorpora i simboli nel testo
- 29. PHP rimuovi i simboli dalla stringa
- 30. Impossibile creare i simboli b/c zlib
Grazie a tutti. Stackoverflow è brillante, non è vero, e soprattutto a causa delle persone che lo usano. – Jerome